首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

[obj-c]基础的货色

2012-09-29 
[obj-c]基础的东西记录学习obj-c的一些基础的东西obj-c方法前的符号

[obj-c]基础的东西

记录学习obj-c的一些基础的东西

====================================

obj-c方法前的符号含义。

?

减号 –

实例方法

???? 代表此方法是实例方法,必须先生成类实例,通过实例才能调用该方法。

?

加号 +?

类方法

??? 代表此方法是类的静态方法,可以直接调用,而不用生成类实例。

====================================

KVC?

?

概述?KVC是KeyValue Coding的简称,它是一种可以直接通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。?

-valueForKey:

-setValue: forKey:

?

path

-valueForKeyPath:

-setValue: forKeyPath:

{把xx设置到马力: 车下的引擎属性,引擎属性下的马力

?[car setValue:@"xxxxx" forKeyPath:@"engine.power"]

}

?

整体操作(数组类)

KVC有一个很棒的一点是,如果NSArray 请求一个键值,它实际上会查询数组中的每一对象来查找这个键值。

ex:

tires<-数组

?

NSArray *pressures = [car valueForKeyPath: @"tires.xxxx"]

?

此时会把所有tires数组内的对象的xxxx属性都查询出来以NSArray的形式。

?

?

流畅的计算(通过使用path与@来实现快速计算)

在valueForPath下使用path与@来实现快速计算 cars是个数组

ex:计算一共用多少车

count = [xx valueForPath:@"cars.@count"]

@sum?

@min

@max

@avg

?

等目前我还不知道其他=-=

ex2:车队中形式公里最长的公里数 cars是个NSArray max会存放车队 cars中行驶公里最长的公里数

max= [xx valurForPath:@"cars.@max.gongli"]

!注意:编译器无法判断他是不是错误键路径。\

?

@distinctUnionOfObjects 在左边的属性数组对应右边属性中去重取出,以NSArray形式

[xx valueForKeyPath:@"cars.@distinctUnionOfObjects.make"]

去重取出make

distinct表示去重 union表示集合

?

处理setValue:forKey: ?value为nil的问题

重写-(void) setNillValueForKey: (NSString *)key?

{

if(key isEqualToString: @"xxxx"){

XXXX=一个值为nil时此属性应该的值

}else{

[super setNilValueForKey:key];

}

}

?

处理未定义的键

添加一个NSMutableDictionary字典来保存未定义的键

重写

-(void) setValue:(id) value forUndefinedKey:(NSString *)key{

if(stuff==nil){

stuff=[[NSMutableDictionary alloc] init]

}

[stuff setValue:value for:key]

}

重写

-(id) valueForUndefinedKey:(NSString *)key{

id value = [stuff valueForkey:key];

return(value)

}

?

?

<null>,(null),nil

<null>

表示[NSNull null]

(null)

是一个真实的nil

nil

obj-c中的空值

NSDictionary ?setValue:forkey:如果设置nil的话 会把对应的键从字典中删除。

?

NSPredicate

类似过滤器

[NSPredicate?predicateWithFormat: @"name=='herbie'"]

返回一个?NSPredicate ?类型对象 此对象表明 过滤:只保留name属性等于herbie。

name属性那个位置可以放置keyPath 如对car使用过滤器时 engine.horsepower>xxx

?

predicateWithFormat后跟一个@"keypath 运算符 value"

且@" (第一个过滤条件) AND (第二个过滤条件)"

AND 还可以为 OR, NOT, &&, ||, !,可以不分大小 不过还是大写好点

不等号不仅适用于数值 也适用于字符。比如<N 则过滤剩下A~M的。

?

数组运算符

引擎马力在50到200之间的。

BETWEEN?

@“engine.horsepower BETWEEN {50,200}”

IN

@“name IN{'abc','poolo'}”

?

字符串运算符

BEGINSWITH 以什么为开头

ENDSWITCH 以什么为结尾

CONTAINS 是否包含

?

LIKE运算符

name LIKE ‘*er*’ ?//包含er的 *表示前后任意

name LIKE '???er*'//er前面只能有3位后面任意

LIKE[cd] 用于忽略大小写

MATCHES 万恶的正则表达式

?


热点排行