对象属性操作-包含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. ...
随机推荐
- Linux安装IDA神器
1.下载windows版的IDA 版本:6.6.141224打包绿色版:http://pan.baidu.com/s/1kTsXZiJ 密码:jj5q 2.复制全部文件到Linux的文件夹中 3.使用 ...
- (转)HTML5 本地存储
原文:http://www.cnblogs.com/rainman/archive/2011/06/22/2086069.html HTML5 本地存储 1.sessionStorage 2.loca ...
- hdu 2098
ps:TLE一次....因为判断素数的时候没开方...作死.. 代码: #include "stdio.h" #include "math.h" int inp ...
- The constness of a method should makes sense from outside the object
C++的encapsulation机制使得我们可以使得一个类的逻辑接口和内部表示有很大的差异,比如下面这个矩形类: class Rectangle { public: int width() cons ...
- 使用HackRF+GNU Radio 破解吉普车钥匙信号
引文 我最近对软件定义的无线电技术(SDR)产生了浓厚的兴趣,而我对其中一款流行的SDR平台(HackRF)也产生了兴趣,而其频率接收的范围也在1MHz ~6GHz之间(范围较广).而这里也需要提及一 ...
- Svn win7系统下状态图标不显示-转载
Svn win7系统下状态图标不显示 Svn版本 tortoisesvn-1.8.8.25755-x64-svn-1.8.10.msi 2.不显示图标状态如图1,期望结果显示图标状态如图2 图1 图2 ...
- 小P的图论课 (模拟退火)
uses math; ; INF=; var n,m,i,x,y,sum,ans,delta:longint; map:..maxn,..maxn] of longint; flag:..maxn] ...
- mysql主从同步mysql slave_io_running:no的解决方案
在主从同步的时候出现slave_io_running:no 问题,于是查看mysqld.log日志,发现时1042错误 解决方案: 编辑/etc/my.cnf,在:[mysqld]内添加一行:skip ...
- MySQL优化—工欲善其事,必先利其器之EXPLAIN(转)
最近慢慢接触MySQL,了解如何优化它也迫在眉睫了,话说工欲善其事,必先利其器.最近我就打算了解下几个优化MySQL中经常用到的工具.今天就简单介绍下EXPLAIN. 内容导航 id select_t ...
- xp 共享 guest
一.首先启用guest来宾帐户 二.控制面板→管理工具→本地安全策略→本地策略→用户权利指派里,“从网络访问此计算机”中加入guest帐户,而“拒绝从网络访问这台计算机”中删除guest帐户: 三.我 ...