IOS开发过程中的KVC机制

作用:提供了另一种  为对象的属性赋值及读取对象属性的编写代码的方式

—————Dog.h———————
@interface Dog : NSObject
@property(nonatomic,strong)NSString *name;

@end
----Book.h----
@interface Book : NSObject
@property(nonatomic,strong)NSString *name;
@property(nonatomic)float price;
@end
----Student.h---
#import <Foundation/Foundation.h>
#import "Dog.h"
#import "Book.h"

@interface Student : NSObject
{
    float _score;
}
@property(nonatomic,strong)NSString *name;
@property(nonatomic,strong)Dog *dog;
@property(nonatomic,strong)NSArray *books;
@end
---Student.m----
@implementation Student
- (instancetype)init
{
    self = [super init];
    if (self) {
        self.dog = [[Dog alloc]init];
        
        Book *b1 = [[Book alloc]init];
        b1.name = @"数学";
        b1.price = 35.5;
        
        Book *b2 = [[Book alloc]init];
        b2.name = @"语文";
        b2.price = 31.8;
        
        self.books = @[b1,b2];
    }
    return self;
}
@end

----ViewController.m----
#import "ViewController.h"
#import "Student.h"
Student *stu = [[Student alloc]init];
    
    //1.为私有成员赋值
    [stu setValue:@98 forKey:@"score"];
    [stu setValue:@"张3" forKey:@"name"];
   
    NSLog(@"%@ %@",[stu valueForKey:@"name"],[stu valueForKey:@"score"]);

//2.访问id类型的对象
    id stu2 = [[Student alloc]init];
    [stu2 setValue:@"李4" forKey:@"name"];
    [stu2 setValue:@95.5 forKey:@"score"];

NSLog(@"%@ %f",[stu2 valueForKey:@"name"],[[stu2 valueForKey:@"score"] floatValue]);
    
    //3.为层级类型的属性赋值
    [stu setValue:@"ww" forKeyPath:@"dog.name"];
    NSLog(@"%@",stu.dog.name);
    
    //4.使用自带的运算符对数组属性进行运算
    //获取所有图书的价格
    NSLog(@"%@",[stu valueForKeyPath:@"books.price"]);
    //获取所有图书的总价sum/平均价格avg/最大价格max/最小价格min
    NSLog(@"%@",[stu valueForKeyPath:@"[email protected]"]);
    //获取图书的总数
    NSLog(@"%@",[stu valueForKeyPath:@"[email protected]"]);

时间: 2024-10-16 21:58:21

IOS开发过程中的KVC机制的相关文章

iOS开发过程中使用Core Data应避免的十个错误

原文出处: informit   译文出处:cocoachina Core Data是苹果针对Mac和iOS平台开发的一个框架,主要用来储存数据.对很多开发者来说,Core Data比较容易入手,但很难精通,如果没有正确的学习方法,你将很难真正理解它,更不用说精通了.很多开发者常常在这方面犯一些错误,而这篇文章列出了开发者在iOS开发过程中使用Core Data常见的一些错误,并对如何避免这些错误进行了分析.  1.不了解关键术语 对于iOS开发者来说,会使用Core Data是一项必备技能.

iOS开发过程中,是用Storyboard/xib做界面,还是用代码来写界面,还是混合使用

以下是个人观点,非喜勿喷 关于iOS 开发过程中,是用Sb/xib 做界面 还是代码写界面,一直是讨论不断 各自成帮结派, 拖拉派.代码派.中间派 1. 拖拉派 ,Storyboard/xib 使用者, 像是海贼王里的能力者,开发快.Auto Layout .结构清晰,直观,一目了然 (个人觉得,小项目如此,超过10个界面以上,界面关系在复杂的话,看起来真是一团糟),能力者是有缺点的不会游泳, 同样Storyboard/xib 同样有它的缺点:(以下摘自) a). 所有的ViewControll

浅谈iOS开发过程中的Core Location &amp;Map Kit

两个月前,抱着对iOS开发的兴趣开始接触苹果设备的开发,开始接触object -C,以后用OC来代替,本人新人一枚,以后会经常写一些东西给大家分享,有做的不到位的,请大家多多包涵.今天是我发表的第一篇博客.有什么错误的或者是写的不到位的情况.请大家指正,大家共同进步.今天呢我来介绍一些关于iOS开发过程中的地图类. OC是面向对象的语言,和我们接触的C++,JAVA是一样的.在OC中除了基本的数据类型外,其他的基本上是通过对象来调用的.言归正传,iOS开发过程中,添加地图首先用到的主要的类和数据

iOS 开发过程中常出现的一些错误总结

iOS 开发过程中常出现的一些错误总结 1.两个视图控制器之间的跳转 (1)跳转:[self presentModalViewController:control animated:YES]; 返回:[self dismissModalViewControllerAnimated:YES]; (2) 跳转:[self.navigationController  pushViewController:subTableViewController animated:YES]; 返回:[self.na

探索iOS开发中的消息传递机制

注1:本文由破船译自Communication Patterns. 每个应用程序或多或少,都由一些松耦合的对象构成,这些对象彼此之间要想很好的完成任务,就需要进行消息传递.本文将介绍所有可用的消息传递机制,并通过示例来介绍这些机制在苹果的Framework中如何使用,同时,还介绍了一些最佳实践建议,告诉你什么时机该选择使用什么机制. 虽然这一期的主题是关于Foundation Framework的,不过本文中还介绍了一些超出Foundation Framework(KVO和Notificatio

iOS开发过程中的小技巧

转载自:http://blog.csdn.net/a451493485/article/details/8598839 iphone程序中实现截屏的一种方法在iphone程序中实现截屏的一种方法: //导入头文件#import QuartzCore/QuartzCore.h//将整个self.view大小的图层形式创建一张图片image UIGraphicsBeginImageContext(self.view.bounds.size):[self.view.layer renderInCont

iOS开发过程中的一些调试技巧

前言 在开发中一定需要到调试跟踪,但是很多开发者虽然做过很多的项目,但是未必了解开发中有哪些调试命令可以帮助我们开发者更快更好地定位到问题所在. 本篇文章主要是讲解在开发中如何利用LLDB来Debug.首先会讲一些基础知识,主要是帮助新手们学习如何去调试.对于一些比较高级的操作,不会也没有关系,但是如果能够掌握得了的话,会更方便更快速地查找问题. 初步认识LLDB LLDB是XCode内置的为我们开发者提供的调试工具.至于还不懂什么是调试的,百度一下概念吧,笔者也不知如何描述.看看下图吧,应该就

ios开发过程中屏幕方向判断的问题

判断屏幕的方法有很多着及仅提供几个我个人认为好用的方案 Landscape 竖屏 Portrait 横屏 最有效的方法是: 在willRotateToInterfaceOrientation:duration: 方法中将方向存储起来: DrviceOrientation = toInterfaceOrientation; 然后在别的方法中使用相应的屏幕的方向 方法一: 直接获取设备的方法:self.interfaceOrientation(此方法已经过期) 方法二: 通过下面的方法: UIDev

ios程序中的通知机制

每一个应用程序中都有一个NSNotificationCenter实例,用来协助不同的对象之间的通信,任何一个对象都可以向通知中心发布通知(NSNotication),在通知中描述自己做什么.其他的感兴趣的对象可以申请在某个特定的通知或者特定对象发出通知时接收到这个通知. 一个通知一般包含有3个属性: //通知的名称 - (NSString *)name; //通知的发布者 - (id)object; //通知附加的额外信息 - (NSDictionary *)userinfo; 初始化一个通知对