将 NSMutableArray 保存到 plist [关闭]
Posted
技术标签:
【中文标题】将 NSMutableArray 保存到 plist [关闭]【英文标题】:Saving NSMutableArray to plist [closed] 【发布时间】:2013-12-01 20:26:58 【问题描述】:我刚刚完成了 Apple 的 "Start Developing ios Apps Today" 指南。
在本教程的最后,我有一个基本的 ToDo 应用程序,它将数据保存在 NSMutableArray
中。我想把这些数据放到 plist 中。我在 *** 上找到了解决方案,但在我的情况下它不起作用。
- (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 模拟器)。你有什么想法吗?
【问题讨论】:
你的数组中有哪些类型的对象? 为什么以及如何不起作用? NSString、BOOL 和 NSDate 它不会将 plist 文件保存在 iDevice 的“文档”中 Saving Array to Plist file that contains Custom Objects iPhone的可能重复 【参考方案1】:属性列表文件只能存储基本数据类型,不能包含自定义对象。
您需要为对象 XYZToDoItem 实现协议<NSCoding>
的方法:
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
然后写入数据:
NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:data];
[savedData writeToFile:finalPath options:NSDataWritingAtomic error:&error];
【讨论】:
以上是关于将 NSMutableArray 保存到 plist [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
将 NSMutableArray 保存到 plist [关闭]
使用 NSKeyedArchiver 将 NSMutableArray 保存到 NSUserDefaults
如何将 NSMutableArray 保存到 iPhone 的 plist 中