【非凡程序员】 OC第九节课 (KVC的运算)

买粽子的例子,主要输练习KVC的应用,(注意:必须建立一个数组,才能使用KVC的运算)详细代码如下:

1.main函数代码:

#import <Foundation/Foundation.h>
#import "Person.h"
#import "zongZi.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        
        float money = 5.5;
        NSString * smoney = [NSString stringWithFormat:@"%.2f",money];
        
        Person * suiping = [[Person alloc]init];
        [suiping setValue:@"suiping" forKey:@"name"];
        [suiping setValue:smoney forKey:@"money"];
        
        zongZi * zongzi1 = [[zongZi alloc]init];
        [zongzi1 setValue:@"大肉粽" forKey:@"name"];
        [zongzi1 setValue:@"1.2" forKey:@"price"];
        
        zongZi * zongzi2 = [[zongZi alloc]init];
        [zongzi2 setValue:@"蜜枣粽" forKey:@"name"];
        [zongzi2 setValue:@"0.7" forKey:@"price"];
        
        zongZi * zongzi3 = [[zongZi alloc]init];
        [zongzi3 setValue:@"豆沙粽" forKey:@"name"];
        [zongzi3 setValue:@"0.8" forKey:@"price"];
        
        //新建一个购物车
        NSArray * gouwuche = [NSArray arrayWithObjects:zongzi3,zongzi2,zongzi1,zongzi1, nil];
         //把购物车传进到数组moneyCollent中,(注意:必须建立一个数组,才能使用KVC的运算)

        [suiping setValue:gouwuche forKey:@"moneyCollent"];
        
        float usedmoney = [[suiping valueForKeyPath:@"];
        float shengXia = money - usedmoney;
        
        //进行KVC运算,方便快捷
        NSLog(@"我刚开始有%@元", [suiping valueForKey:@"money"]);
        NSLog(@"总共买了%@个", [suiping valueForKeyPath:@""]);
        NSLog(@"总共花了%@元", [suiping valueForKeyPath:@""]);
        NSLog(@"剩下%.2f元", shengXia);
        NSLog(@"平均花了%@元", [suiping valueForKeyPath:@""]);
        NSLog(@"最便宜%@元", [suiping valueForKeyPath:@""]);
        NSLog(@"最贵的%@元", [suiping valueForKeyPath:@""]);
    }
    return 0;
}

2.Person.h代码:

#import <Foundation/Foundation.h>
#import "zongZi.h"
@interface Person : NSObject

@property (nonatomic,assign) NSString *name;
@property (nonatomic,assign) float money;
@property (nonatomic,assign) NSArray *moneyCollent;//(注意:必须建立一个数组,才能使用KVC的运算)

@end
时间: 2024-10-04 12:38:50

【非凡程序员】 OC第九节课 (KVC的运算)的相关文章

【非凡程序员】 OC第九节课 (KVC的使用)

今天主要学习了1.关键字@synthesize我们使用@property定义属性之后,有时候我们不想定义属性为_开头的参数名,如果我们想修改这个属性的名称,就可以使用@synthesize关键字来对属性名称进行修改 2.点语法①可以用作set和get调用Person *person1=[[Person alloc]init];person1.name="zhang"; //用法和[person1 setName:"zahng"]一样;NSLog("name

【非凡程序员】 OC第九节课 (KVO的应用)

这是一个QQ密码登陆地址和密码同时被修改时,通知用户QQ账号出现问题 该题难度主要在于判断监控的两次数据都是被修改的 有两种方案: ①定义一个可变的数组,把每次监控到的新旧数据添加进去,进行对比 ②定义一个变量,每修改一次,该变量就自加一次,判断为2时,通知用户 (1)main函数//  main.m//  QQ被盗////  Created by 非凡程序员 on 15/5/27.//  Copyright (c) 2015年 非凡程序员. All rights reserved.// #im

【非凡程序员】 OC第十五节课 (观察者模式和KVO进行对比)

今天主要学了观察者模式,以及回顾复习了KVO,两者进行对比 什么是观察者模式? 我们先打个比方,这就像你订报纸.比如你想知道美国最近放生了些新闻,你可能会订阅一份美国周刊,然后一旦美国有了新的故事,美国周刊就发一刊,并邮寄给你,当你收到这份报刊,然后你就能够了解美国最新的动态.其实这就是观察者模式,A对B的变化感兴趣,就注册为B的观察者,当B发生变化时通知A,告知B发生了变化.这是一种非常典型的观察者的用法,我把这种使用方法叫做经典观察者模式 KVO的全称是Key-Value Observer,

【非凡程序员】 OC第五节课 (数据类型NSString和NSString)

//  main.m//  ZiFuChuan////  Created by 非凡程序员 on 15/5/18.//  Copyright (c) 2015年 非凡程序员. All rights reserved.// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {    @autoreleasepool { NSString *[email protected]"AB"

【非凡程序员】  OC第十节课 (代码块)

代码块就相当于C语言中一个函数一样 ////  main.m//  DaiMaKuai////  Created by 非凡程序员 on 15/5/28.//  Copyright (c) 2015年 非凡程序员. All rights reserved.// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {    @autoreleasepool { int i=7; //代码块格式如下: 

【黑马程序员】第12课:文件上传&文件下载&注解

<pre> day12 上节内容回顾 1.jstl的标签 *if  choose *forEach <c:forEachvar="l" items="${list}"> 2.jsp开发模式 *模型一 *模型二(mvc模式) **mvc模式 ***m:模型,使用javabean ***v:视图,使用jsp ***c:控制器,使用servlet *dao模式:数据访问对象,专注于对数据库的操作 **首先创建接口,在接口里面定义操作数据库的方法 *

Linux学习第九节课-shell脚本编程

Linux第九节课 -------------------------------------------------------------------------------------------------------------------------------- 程序:算法+数据结构 数据:程序的核心 算法:处理数据的方式 程序编程风格 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 高级编程语言 编译:高级语言→编译器→机器代码→执行,例如c,c++等

[非凡程序员]手写UIDatePicker和UIPickerView

// //  ViewController.h //  手写UIDatePicker // //  Created by 非凡 程序员 on 15/11/13. //  Copyright (c) 2015年 非凡 程序员. All rights reserved. // #import <UIKit/UIKit.h> @interface  ViewController : UIViewController @property(nonatomic,strong)UIDatePicker *d

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性