对象属性操作-包含kvc---ios
#import <Foundation/Foundation.h>
@class Author;
@interface Books : NSObject{ @private
NSString *color;
int book_id;
NSString *box;
Author *author;
NSArray *relationbook;
float price; @public
NSString *name; } @property (nonatomic) int size; -(void) setBox:(NSString *) box;
-(NSString *) box; -(NSString *) method;
@end
#import "Books.h"
@implementation Books
@synthesize  size=_size;
-(void) setBox:(NSString *) _box{
    box=_box;
}
-(NSString *) box{
    return box;
}
-(NSString *) method{
    return @"这个方法可以通过[],或者点语法调用";
}
@end
#import <Foundation/Foundation.h> @interface Author : NSObject
@property (nonatomic,copy) NSString *name; @end
#import "Author.h" @implementation Author
@synthesize name=_name;
@end
        Books *book=[[Books alloc] init];
        //当属性为public时,可以通过指针来操作,kvo,kvc操作
        book->name=@"iso开发";
        NSLog(@"%@",book->name);
        [book setValue:@"iphone" forKeyPath:@"name"];
        NSLog(@"%@",[book valueForKey:@"name"]);
        //当属性为private时,可以用property和synthesize来自动生成get,set方法,然后通过点语法或者调用自动生成方法来操作
        book.size=12;
        NSLog(@"%d",book.size);
        [book setSize:14];//自动生成的set方法
        NSLog(@"%d",[book size]);//自动生成的get方法
        [book setValue:[NSNumber numberWithInt:2323] forKeyPath:@"size"];
        NSLog(@"%@",[book valueForKey:@"size"]);
        //当属性为private时,可以手动生成,然后通过点语法或者调用方法来操作
        NSString *content=@"书的内容";
        book.box=content;
        NSLog(@"%@",book.box);
        [book setBox:content];
         NSLog(@"%@",[book box]);
        [book setValue:@"来说" forKeyPath:@"box"];
        NSLog(@"%@",[book valueForKey:@"box"]);
        //声明普通方法可以通过点语法调用或者[]调用
        NSLog(@"%@",[book method]);
        NSLog(@"%@",book.method);
        //当属性为private时,可以通过kvo,kvc,即下面方式访问
        //-----属性为普通类型操作
        [book setValue:@"android开发" forKey:@"name"];
        [book setValue:@"whilte" forKey:@"color"];
        NSLog(@"%@:%@",[book valueForKey:@"name"],[book valueForKey:@"color"]);
        //----属性为自定义对象操作1--对象
        Author *author=[[Author alloc] init];
        author.name=@"caicai";
        [book setValue:author forKey:@"author"];
        Author *author2=[book valueForKey:@"author"];
        NSLog(@"%@",author2.name);
        //----属性为自定义对象操作2--对象--路径访问
        [book setValue:@"caitou" forKeyPath:@"author.name"];
        NSLog(@"%@",[book valueForKeyPath:@"author.name"]);
        //----属性为自定义对象操作2--对象数组--路径访问
        NSMutableArray *relationBook=[NSMutableArray arrayWithCapacity:3];
        for (int i=0; i<3; i++) {
            Books *book=[[Books alloc] init];
            NSString *name=[NSString stringWithFormat:@"job_%d",i];
            [book setValue:name forKeyPath:@"name"];
            [book setValue:@(12+i) forKeyPath:@"price"];
            [relationBook addObject:book];
        }
        [book setValue:relationBook forKeyPath:@"relationbook"];
        NSArray *names=[book valueForKeyPath:@"relationbook.name"];
        NSLog(@"%@",names);
        //kvc简单运算 sum max avg count
         NSLog(@"%@",[book valueForKeyPath:@"relationbook.@sum.price"]);
         NSLog(@"%@",[book valueForKeyPath:@"relationbook.@count"]);
        NSLog(@"%@",[book valueForKeyPath:@"relationbook.@max.price"]);
        NSLog(@"%@",[book valueForKeyPath:@"relationbook.@avg.price"]);
对象属性操作-包含kvc---ios的更多相关文章
- 2018-06-27 jq文档处理与jq对象属性操作
		
jQ文档处理: 内部插入 A.append(B) ->把B后追加到A内部中 B.appendTo(A) ->把B后追加到A内部中 A.prepend(B) ->把B后追加到A内部中 ...
 - javascript-object对象属性操作之Object.defineProperty
		
一.基本用法简介 声明一个简单的对象,如下 var obj = { name: 'ldld' } 我们可以用Object.defineProperty来声明这个对象 var obj = {} Obje ...
 - jQuery对标签、类样式、值、文档、DOM对象的操作
		
jquery的标签属性操作 使用attr()方法对html标签属性进行操作,attr如果参数是一个参数,表示获取html标签的属性值,如果是两个参数则是设置标签属性名以及对象的属性值 .prop()适 ...
 - jQuery对象的属性操作
		
jquery的属性操作模块分为四个部分:html属性操作,dom属性操作,类样式操作和值操作 html属性操作:是对html文档中的属性进行读取,设置和移除操作.比如attr().removeAttr ...
 - js知识梳理2:对象属性的操作
		
1.属性的查询和设置 ①基本语法 这个简单,可以通过点(.)或方括号([])运算来获取属性的值,注意点运算符后的标识符不能是保留字,方括号内的表达式必须返回字符串或返回一个可以转换成字符串的值. va ...
 - 了解JavaScript 对象的属性操作
		
提起操作, 很多人都会想到我们学习过程中最经常做的操作, 就是对数据库进行增, 删, 改, 查, 既然提到这个, 那么对于对象的属性操作也不例外, 基本上可以说也是这几个操作. JS中对象的属性标签 ...
 - 深入理解javascript对象系列第二篇——属性操作
		
× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...
 - [BS-04] 在iOS中对系统定义的类的readonly属性可通过KVC进行赋值
		
系统提供的类的readonly属性可通过KVC进行赋值 UITabBarController.h @interface UITabBarController : UIViewController &l ...
 - 页面循环绑定(变量污染问题),js面向对象编程(对象属性增删改查),js字符串操作,js数组操作
		
页面循环绑定(变量污染问题) var lis = document.querySelectorAll(".ul li") for ( var i = 0 ; i < lis. ...
 
随机推荐
- PAT 06-2 字符串字母大小写转换
			
没什么好说的,记得使用ctype.h就好了,谭浩强那本书就介绍了,再不使用就太对不起他老人家了:有一点小小的地方需要注意一下,&&的优先级比=号高,所以getchar()两边没有括号的 ...
 - Android异步更新UI的四种方式
			
Android异步更新UI的四种方式 2015-09-06 09:23 segmentfault 字号:T | T 大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中 ...
 - python中的namespace
			
python中的名称空间是名称(标识符)到对象的映射. 具体来说,python为模块.函数.类.对象保存一个字典(__dict__),里面就是重名称到对象的映射. 可以参看下面python程序的输出: ...
 - The ShortCuts in the ADT (to be continued)
			
1. automatically add all the namespace which need to be include in the class. ctrl+shift+o
 - 深入学习:如何实现不同Android设备之间相同应用程序的网络服务发现功能
			
在我们的app中添加网络服务发现功能(NSD)以方便在不同的设备上响应局域网中的请求.这种功能对于多设备之间点对点服务来说很有用,例如多人游戏,多人通话,文件共享等. 一,在网络中注册你的服务 注意: ...
 - 学生信息管理系统v1.0
			
昨天一个教师朋友找到我,告诉我现在学期末他工作比较忙.需要统计处理很多学生信息,想让我帮他做一个管理系统.实现的功能就是把WPS表格转化成Word文档,将每一个学生的信息都能够分开,并且要根据名字找到 ...
 - magento-connect-manage出现404或者500内部错误的解决办法
			
将网站根目录下的downloader文件权限改为755,将downloader下的index.php文件的权限改为644即可:
 - BOOL布尔类型
			
1.BOOL数据类型,是一种表示非真即假的数据类型,布尔类型的变量只有YES和NO两个值.YES表⽰示表达式结果为真,NO表示表达式结果为假. 2.在C语言中,认为非0即为真. 3.分⽀支语句中,经常 ...
 - 转:DateTime的灵活运用
			
//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString(& ...
 - 表视图控制器(TableViewController)(二)
			
1 tableView的编辑模式 1.1 问题 表视图可以进入编辑模式,当进入编辑模式就可以进行删除.插入.移动单元等操作,本案例还是使用联系人界面学习如何进入编辑模式,以及进入编辑模式之后的删除.插 ...