ios basic 2.2:working with foundation

当你用代码区实现你的app的时候,你会发现有许多的framework可供你使用,在这些frameworks中比较重要的是Foundation frameworks,它提供了你的app的基本的serves,Foundation framework包含value class,它包含基本的数据类型,比如:number,strings,和collection class等

Value object:

Foundation framework用strings,binary data,dates,and times,numbers,and other values的类去产生value object.

value object是一个能够封装原始类型并能提供对他的值进行访问的对象,value object通常作为参数,或者你所调用的方法或函数的返回值,

一些值对象的例子:

NSString 和NSMutableString

NSArray 和NSMUtableArray

NSDate 

NSNumber'

NSValue

value object代表一个标量值,你可以在任何需要他的地方使用

值对象相对于它所封装的原始对象来说有一个优点:

让你对它所封装的value进行简单高效的访问,比如NSString 类,他有搜寻和替换某个subString的方法,你可以调用方法快速的达到你的目的

Strings:

NSString class为string提供了封装,




NSNumber

创建包含int value和double value的NSNumber object


创建包含Bool value和character value的NSNumber object


还可以创建包含unsigned integer,long integers,long long integers,和float value的NSNumber object.当你创建这些对象时应在数值后面加上U or L or LL or F,如创建一个float value的value object


collection object

在Objective-c中大部分的collection objects都是basic collection class如NSArray,NSDictionary ,NSSet,等的实例。这些类去管理多个对象,添加到一个collection中的object必须是objective-c基本类的实例。

你添加到一个collection中的任何object你都可以随时取用,那是因为collection class 用strong reference去记录他的内容

NSArray,NSSet,NSDictionary的content在创建之时就已设定好,他们不能被改变,他们是immutable的,他们中的每一个都有一个可Mutable的子类去add and remove object.

不同的类型的collections组织他们包含的content用不同的方式

NSArray and NSMutableArray:

一个array中的对象是有顺序的,在array中通过index来获取对象,index 0是Array中第一个对象

NSSet and NSMutableSet:在一个set中的object是没有顺序的,通常获取一个对象用test这个对象是否在set中

NSDictionary and NSMutableDictionary:存储他的对象用key-value pairs,key 是唯一的identifier,通常用string,the value 是你想要存储的object,通常用key来获取他

Array

一个Array是有序的对象的list,array中的每一个item都是objective-c中的一个对象,但对象的类型可以不一样



create array:

可以通过allocation 和initialization来build Array:

根据不同的对象,用不同的参数和不同的初始化方法


arrayWithObjects:方法和initWithObjects:方法必须以nil终止,必须包含nil作为他的最后的一个值


在下面这种情况下:


object someArray仅仅包含一个对象firstObject.因为sceondObject 是nil,当用ArrayWithObjects:来创建数组是一nil作为元素的终止标志

而array中可以包含nil,把nil当作array的一个element


可以用上面的这种方法来创建包含nil element的NSArray object someArray;

Querying Array Objects

在创建了数组之后,你要从数组中得到一些information,比如Array中包含多少个objects,判断某个object是否在Array中


用NSArray的实例方法count:可以得到某个NSArray的对象包含多少个objects.返回值为NSUInteger

用NSArray的实例方法containsObject:方法可以判断某个对象是否存在于某个NSArray的对象中

可以用index来得到一个NSArray 对象中在该index位置的item,但你所提供的index必须是可用的,否则在运行时就会谈出out of bounds exception.当用index访问NSArray的对象时,你必须要check 该对象是否为空,你的index是否超出了该对象所包含的objects的个数


上面的这个例子check了number of items,看他是否为0,如果不是用NSLog function输出someArray的first object

你可以访问数组用一个下标,就好像你在用C Array一样


Sort Array Objects

NSArray提供了许多方法去对数组中的元素进行排序,但由于NSArray是immutable的,所以在排序后将会产生一个新的NSArray object;

你可以用string中的compare:来比较一个string NSArray对象中的string items


Mutability

NSArray本身是immutable的,但他包含有mutable的子对象

可以添加一个mutable string 到一个immutable Array:


这样做了以后,你可以更改这个mutableString



当你想要从已经创建的Array中添加或是移除objects时,需要用NSMutableArray


sorted imutableArray中的item依次是:“alphon","beta","list".

Set:

set与array有点相似,但在set中的item是没有顺序的,并且两个item不能相同

由于set没有顺序,所以当用来test某一个item是否存在的时候有这非常好的性能

NSSet是immutable的,所以必须在创建的时候指明他的content.可以用allocate 和initial 或是用NSSet的类创建方法


NSSet的方法:initWithObjects:和setWithObjects:都包含一个nil终结符,它告诉xcode该NSSet的instance object所包含的item在此结束,不包含nil.

NSMutableSet是NSSet的子类:

NSSet仅仅存储一次对单个对象的reference,当同一个对象被多次添加的时候,他只包含一个对象。


iset中仅仅只有一个对象intNumber;

Dictionaries:

与简单的存储一个有顺序或是没有顺序的object的collection相比,Dictionary 用一个与object相联系的给定的key值

来存储对象,用这个key值来检索对象


尽管你可以用非string作为keys,但要记住在NSDictionary中,对每一个key都是通过cope来使用的,所以keys必须支持NSCope.如果你想要通过key值来找到value或通过value来找到key,你最好用NSString 作为key.

可以用allocation和initialization 的组合或使用类的构造方法来创建NSDictionary对象


dictionaryWithObjectsAndKeys:与initWithObjectsAndKeys:都是以nil作为终结标识符的。

还可以直接用·@{key:object,key:object,...}来创建dictionary


用这种方法创建dictionary时,注意没有nil终结标识符

Querying dictionary:

在你已经build一个dictionary之后,你可以用被给的key来从dictionary里获取该key所对应的object.

当你需要在build一个dictionary之后,你还需要对这个dictionary添加或更改item,你需要用到NSMutableDictionary

represent nil with NSNull

在objective-c中nil代表no object,当你在selection中需要一个代表“no object"的对象时可以用[NSNull null]来代替

在NSNull中,null方法总是return the same instance,因此,你可以check一个array中是否有这个shared instance.





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值