iOS数据存取:自定义对象

ios中,如果要以文件形式保存自定义对象的话,NSKeyedArchiver是很好的选择。


[NSKeyedArchiver archiveRootObject:(id) toFile:(NSString *)];


第一个参数表示要保存的对象,第二个参数表示对象保存的路径。

对于在ios中可以直接保存到文件的对象类型,可以直接用NSKeyedArchiver来保存,例如

   1.   -NSArray

   2.   �C NSDictionary

   3.   �C BOOL
   4.   �C NSDate
   5.   �C NSNumber

   6.   �C NSString

   7.  -NSData

如果是其他的自定义对象类型,则该对象必须遵守NSCoding协议。并实现该协议的两个方法

   encodeWithCoder:

   initWithCoder:


- (void)encodeWithCoder:(NSCoder *)aCoder{

   [aCoder encodeObject:titleforKey:@"title"];

}

- (id)initWithCoder:(NSCoder *)aDecoder{

   [selfsetTitle:[aDecoder decodeObjectForKey:@"title"]];

returnself;

}


使用(NSCoder *)aCoder的- (void)encodeObject:(id)objv forKey:(NSString *)key;方法时,要注意,被encoded的对象要是上面7中类型之一或者实现了NSCoding协议。


自定义对象保存的过程,其实就是对象的各个能被直接保存的基本类型的保存过程。如果自定义对象中有自定义对象成员,只要保证该自定义对象成员遵守了NSCoding协议并实现了该协议的方法就可以了。

NSKeyedArchiver保存集合对象时,只要保证集合对象中保存的对象是上面7种类型或实现了NSCoding协议就行了。这样可以实现多个对象保存在一个文件中。

   


你可能感兴趣的:(iOS数据存取:自定义对象)