将 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 中

将 NSMutableArray 保存到带有时间戳的文件?

使用 NSObjects 将文件保存到文档 NSMutableArray 的问题

是否可以将带有 NSKeyedArchiver 的 NSMutableArray 保存到核心数据中?