我刚刚完成了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模拟器)。你有什么想法吗?
答案 0 :(得分:3)
属性列表文件只能存储基本数据类型,不能包含自定义对象。
您需要为对象XYZToDoItem实现协议<NSCoding>
的方法:
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
然后写入数据:
NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:data];
[savedData writeToFile:finalPath options:NSDataWritingAtomic error:&error];