2012-04-24 51 views
0

我写下面的代码将nsmutablearray写入filemanager。无法将NSMutableArray写入NSFileManager iOS Sdk

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]; 

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

任何人都可以告诉我原因。

+1

是什么arrayFile,你是如何创造的? – rishi 2012-04-24 11:30:57

+0

没有更多的代码,错误信息,不,我们不能告诉你是什么原因。 – rckoenes 2012-04-24 11:30:58

+0

@RIP在那个数组中,我添加了包含UIImage和Int的对象,并从filemanager中检索数组内容时我没有收到任何错误,它只返回0个对象 – user1300511 2012-04-24 11:39:56

回答

2

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

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

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

谢谢你的回复Jack Cox,但在我的对象中,我还必须添加int类型,并且必须将其保存在文件管理器中...比解决方案 – user1300511 2012-04-24 12:32:13

+1

我刚编辑我的回复。 NSArray文档省略了允许NSNumber和NSDate的两种类型。如果你使用[NSNumber numberWithInt:],你可以使数组成为NSNumbers数组,每个数组都包含一个int。 – 2012-04-24 12:41:24

+0

创建一个词典,有键“id&values”。将你的int id映射到键“id”并将数组映射到键“values”,然后将该词典写入文件。 – iDroid 2012-04-24 12:43:22