#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. 网络数据的XML解析

    网络应用中的数据解析,因为最近的应用,无论是Android的和ios平台的,一直用也是建议用的都是Json解析, xml解析都有点被遗忘了. 然后最近自己在做着玩一个ios的小应用,涉及网络数据的抓取 ...

  2. Codeforces Round #247 (Div. 2)

    A.水题. 遍历字符串对所给的对应数字求和即可. B.简单题. 对5个编号全排列,然后计算每种情况的高兴度,取最大值. C.dp. 设dp[n][is]表示对于k-trees边和等于n时,如果is== ...

  3. (转)Android学习笔记---SQLite介绍,以及使用Sqlite,进行数据库的创建,完成数据添删改查的理解

    原文:http://blog.csdn.net/lidew521/article/details/8655229 1.SQLite介绍:最大特点是,无数据类型;除了可以使用文件或SharedPrefe ...

  4. hdu 2000

    ps:刚开始学C++...用C++来试试.. 代码: #include <iostream> using namespace std; int main(){ ],t,i,j; ]> ...

  5. LeetCode222 Count Complete Tree Nodes

    对于一般的二叉树,统计节点数目遍历一遍就可以了,但是这样时间复杂度O(n),一下就被卡住了. 这题首先要明白的是,我们只需要知道叶子节点的数目就能统计出总节点树. 想法1: 既然是完全二叉树,我肯定是 ...

  6. Linux/Unix 桌面趣事:文字模式下的 ASCII 艺术与注释绘画

    boxes 命令不仅是一个文本过滤器,同时是一个很少人知道的有趣工具,它可以在输入的文本或者代码周围框上各种ASCII 艺术画.你可以用它快速创建邮件签名,或者在各种编程语言中留下评论块.这个命令可以 ...

  7. python的变量作用域

    import time global mark,sum def gaosi(Q): global sum,mark # 在 使用的时候防止隔离 也要声明一下 这个是全局变量 , 引用外面的值 sum+ ...

  8. Yii2 GridView自定义链接之重写 ActionColumn

    最近刚开始用yii2,真是超棒的,但是也有许多不足的地方,今天要说的就是GridView链接问题.   <?= GridView::widget([ 'dataProvider' => $ ...

  9. magento-connect-manage出现404或者500内部错误的解决办法

    将网站根目录下的downloader文件权限改为755,将downloader下的index.php文件的权限改为644即可:

  10. 如何让你的Apache支持include文件解析和支持shtml的相关配置

    源地址:http://www.itokit.com/2011/0430/65992.html Apache支持include文件解析shtml首先要应该修改Apache配置文件httpd.conf . ...