2012-04-24 68 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