#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的更多相关文章

  1. 2018-06-27 jq文档处理与jq对象属性操作

    jQ文档处理: 内部插入 A.append(B) ->把B后追加到A内部中 B.appendTo(A) ->把B后追加到A内部中 A.prepend(B) ->把B后追加到A内部中 ...

  2. javascript-object对象属性操作之Object.defineProperty

    一.基本用法简介 声明一个简单的对象,如下 var obj = { name: 'ldld' } 我们可以用Object.defineProperty来声明这个对象 var obj = {} Obje ...

  3. jQuery对标签、类样式、值、文档、DOM对象的操作

    jquery的标签属性操作 使用attr()方法对html标签属性进行操作,attr如果参数是一个参数,表示获取html标签的属性值,如果是两个参数则是设置标签属性名以及对象的属性值 .prop()适 ...

  4. jQuery对象的属性操作

    jquery的属性操作模块分为四个部分:html属性操作,dom属性操作,类样式操作和值操作 html属性操作:是对html文档中的属性进行读取,设置和移除操作.比如attr().removeAttr ...

  5. js知识梳理2:对象属性的操作

    1.属性的查询和设置 ①基本语法 这个简单,可以通过点(.)或方括号([])运算来获取属性的值,注意点运算符后的标识符不能是保留字,方括号内的表达式必须返回字符串或返回一个可以转换成字符串的值. va ...

  6. 了解JavaScript 对象的属性操作

    提起操作, 很多人都会想到我们学习过程中最经常做的操作, 就是对数据库进行增, 删, 改, 查, 既然提到这个, 那么对于对象的属性操作也不例外, 基本上可以说也是这几个操作. JS中对象的属性标签 ...

  7. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

  8. [BS-04] 在iOS中对系统定义的类的readonly属性可通过KVC进行赋值

    系统提供的类的readonly属性可通过KVC进行赋值 UITabBarController.h @interface UITabBarController : UIViewController &l ...

  9. 页面循环绑定(变量污染问题),js面向对象编程(对象属性增删改查),js字符串操作,js数组操作

    页面循环绑定(变量污染问题) var lis = document.querySelectorAll(".ul li") for ( var i = 0 ; i < lis. ...

随机推荐

  1. hdu 2070

    ps:...递推..还是给出公式那种... 代码: #include "stdio.h" #define LL long long LL dp[]; int main(){ int ...

  2. electronic data interchange 电子数据交换

    electronic data interchange 电子数据交换

  3. 51nod 最长公共子序列Lcs

    有深入 了解了一点 .  51nod 可以用来加深 算法理解程度 ,

  4. codeforces 707D-(DFS+bitset)

    题目链接:http://codeforces.com/contest/707/problem/D 根据询问建立一棵树然后DFS. #include<bits/stdc++.h> using ...

  5. 6、C#基础整理(for 语句经典习题--for循环嵌套、穷举)

    1.for循环嵌套----最基础题目:求阶乘的和 ; int n = int.Parse(Console.ReadLine()); ; i < n; i++) { ;//定义变量sum1,每次循 ...

  6. ASP开发中服务器控件和普通控件的区别

    1.对于服务器按钮控件(即<asp:Button>类型的按钮):服务器响应事件:OnClick客户端响应属性:OnClientClick 2.对于html按钮控件(即<input t ...

  7. SqlSever2005 一千万条以上记录分页数据库优化经验总结

    http://www.cnblogs.com/jirigala/archive/2010/11/03/1868011.html 待测试???

  8. Oracle PL/SQL高级应用 游标

    游标可以处理SQL语句查询出来的结果集,进行逐条控制,其实游标在内存中申请空间,将自己指向SQL语句查询出来的结果集,有点像指针的感觉,游标使SQL更加的灵活. DECLARE CURSOR mycu ...

  9. MyBatis对应的xml的数据类型

    MyBatis对应的xml的数据类型 JDBC Type Java TypeCHAR StringVARCHAR StringLONGVARCHAR StringNUMERIC java.math.B ...

  10. 学习opengl十大网站(转载)

    [转载] 1.http://nehe.gamedev.net/这个是我觉得全世界最知名的OpenGL教程,而且有网友将其中48个教程翻译成了中文http://www.owlei.com/Dancing ...