将NSMutableArray保存为plist

时间:2013-12-01 20:26:59

标签: ios objective-c plist

我刚刚完成了Apple的"Start Developing iOS Apps Today"指南。

在本教程的最后,我有基本的ToDo应用程序,它将数据保存在NSMutableArray中。我想把这些数据放到plist中。我在stackoverflow上找到了解决方案,但在我的情况下它没有用。

- (void) writeToPlist: (NSString*)fileName withData:(NSMutableArray *)data
{
     NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
 NSString *finalPath = [documentsDirectory stringByAppendingPathComponent:fileName];

 [data writeToFile:finalPath atomically: YES];
}

它应该将plist文件保存在我的ios设备的文件夹中(实际上它是iOS模拟器)。你有什么想法吗?

1 个答案:

答案 0 :(得分:3)

属性列表文件只能存储基本数据类型,不能包含自定义对象。 您需要为对象XYZToDoItem实现协议<NSCoding>的方法:

- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;

然后写入数据:

NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:data];
[savedData writeToFile:finalPath options:NSDataWritingAtomic error:&error];