#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. win10 mac地址修改器

    NoVirus Thanks MAC Address Changer NoVirus Thanks MAC Address Changer is yet another simple MAC addr ...

  2. SAP 中如何寻找增强

    http://blog.csdn.net/edifierliu/article/details/5978824 查找SAP标准事务代码中使用的BADI: 在SE24中,查看类对象CL_EXITHAND ...

  3. Mac快捷键 Xcode快捷键

    Mac OSX 快捷键&命令行   一.Mac OSX 快捷键 ctrl+shift                                    快速放大dock的图标会暂时放大,而 ...

  4. Linux 基础入门(新版)(实验一至实验四)

    1.实验一  Lniux简介   操作系统:系统调用+内核 Linux 平台:大都为开源自由软件,用户可以修改定制和再发布,由于基本免费没有资金支持,部分软件质量和体验欠缺:有全球所有的 Linux ...

  5. ZOJ 3811

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5343 网络赛这水题没写过太伤了,赛后写了下1A. 当时钻牛角尖一定要用k次bf ...

  6. esayui-datagrid的使用

    第一步:在页面上引入easyui的jQuery链接 <script src="../../Scripts/easyUI/jquery-1.7.2.min.js" type=& ...

  7. explicit用法

    explicit用来防止由构造函数定义的隐式转换. 要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换. 例如: class things { ...

  8. 《你不知道的JavaScript》第二部分:this 详解

    第1章 关于this this 是自动定义在所有函数的作用域中的关键字,用于引用合适的上下文对象. ☞ 为什么要使用 this ? this 提供了一种更优雅的方式来隐式"传递"一 ...

  9. 《JS高程》对象&原型学习笔记

    ECMA-262 把对象定义为:”无序属性的集合,其属性可以包含基本值.对象或者函数.”可以把 ECMAScript 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数.   6.1.理解 ...

  10. Java 内部类和匿名类 实现JButton动作 ActionListener类

    import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ControlCircle2 extend ...