无法将 NSMutableArray 写入 NSFileManager iOS Sdk

Posted

技术标签:

【中文标题】无法将 NSMutableArray 写入 NSFileManager iOS Sdk【英文标题】:Unable to write NSMutableArray to NSFileManager iOS Sdk 【发布时间】:2012-04-24 11:26:49 【问题描述】:

我写了下面的代码来将 nsmutablearray 写入文件管理器。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

// the path to write file
NSString *arrayFile = [documentsDirectory stringByAppendingPathComponent:arrayName];
[imagesarray writeToFile:arrayFile atomically:YES];

但是文件 id 没有在 NSFilemanager 中创建,我没有得到可能是什么问题。

谁能告诉我原因。

【问题讨论】:

arrayFile 中有什么,你是如何创建它的? 没有更多代码,错误信息,不,我们不能告诉你原因是什么。 @RIP 在该数组中我正在添加包含 UIImage 和 Int 的对象,并且在从文件管理器中检索数组内容时我没有收到任何错误,它只返回 0 个对象 您需要传递要存储它的文件路径,因为方法定义是 - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag @RIP 我这样做了...供您参考,我用我编写的代码编辑了我的问题。 【参考方案1】:

有几件事可能会导致这段代码失败。要检查的事项是: 1) 确保arrayFile 的值是您应用程序沙箱绝对路径中的正确文件名。它不能在应用程序包中或沙盒之外。 2) 确保 imagesArray 中的所有元素都可通过此方法写入。此方法只会写入 NSString、NSNumber、NSDate、NSData、NSArray 和 NSDictionary 对象。如果对象是 NSDictionary 或 NSArray,那么每个元素或子元素也必须是这四种类型之一。

数组的名称意味着您正在编写一个图像数组。这是行不通的,因为 UIImage 不是这 6 种神圣类型之一。您可以使用 sn-p 将 UIImage 转换为 JPEG 或 PNG 表示,如下所示:

UIImage *image = [UIImage imageNamed:@"myimage.png"];
NSData *data = UIImagePNGRepresentation(image, 1.0);

【讨论】:

感谢您的回复 Jack Cox,但在我的对象中我还必须添加 int 类型,并且必须将其保存在文件管理器中......而不是解决方案 我刚刚编辑了我的回复。 NSArray 文档省略了允许使用 NSNumber 和 NSDate 的两种类型。如果你使用 [NSNumber numberWithInt:] 你可以使数组成为一个 NSNumber 的数组,每个都包含一个 int。 创建一个字典,拥有“id & values”键。将int id映射到“id”键,将数组映射到“values”键,然后将字典写入文件。跨度> @JackCox 正如你所说,我可以创建一个 NSDATA 和 NSNUMBER 的对象,我可以将该对象添加到数组中,然后将该数组保存到文件管理器中,这样可以正常工作吗?注意:OBJECT 表示它是 NSObject 超类的一个类 @JackCox 我在 NSOBJECT 类中创建 NSDATA 和 NSNUMEBR 并将其添加到数组并尝试将该数组保存到 FleManager,这是否可行

以上是关于无法将 NSMutableArray 写入 NSFileManager iOS Sdk的主要内容,如果未能解决你的问题,请参考以下文章

何时将 NSMutablearray 写入文件完成?

无法将数据保存到 Plist 中?

无法在 iOS 中将数据写入 .plist

NSF共享服务

无法将存档的 NSMutableArray 加载到新的 NSMutableArray

数据未写入 NSMutableArray