2012-07-07 64 views
-1

對於顯而易見的問題,我很抱歉,但在寫數據到文件時應該注意些什麼,因爲我的程序可以在程序運行時讀取它剛剛寫入的數據,但是當我停止它時,這些文件已空如何將cocoa/xcode中的文本/數據保存到文件中?

使用NSFileHandle,爲了與後來寫入數據,並關閉文件試過了,沒有幫助......目前,我使用:

NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:newArray]; 
[encodedObject writeToFile:string atomically:YES]; 

,無不管我做什麼,我無法得到最簡單的NSString永久保留在文件中

我該怎麼辦?

感謝@LetzFlow,但它還沒有解決它。現在

,我使用:

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

string = [NSString stringWithFormat:@"%d.rtf",fileName];  
NSString *file = [documentsDirectory stringByAppendingPathComponent:string]; 

//NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:file]; 
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:newArray]; 

[encodedObject writeToFile:file atomically:YES]; 
//[fileHandle writeData:encodedObject]; 
//[fileHandle closeFile]; 
NSLog(@"%@",[NSString stringWithContentsOfFile:file encoding:NSStringEncodingConversionAllowLossy error:nil]); 

序列化對象的數組,並且所述的NSLog顯示有效陣列。但是,當我稍後查看文件時,或者嘗試反序列化陣列(如下所示)時:(

NSString *stringX = [NSString stringWithFormat:@"%d.rtf",fileName]; 
NSData *encodedObjectX = [NSData dataWithContentsOfFile:stringX]; 
NSArray *newArrayX = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObjectX]; 
TurnigButton *button = [[newArrayX objectAtIndex:1] objectAtIndex:5]; 
NSLog(@"%d", button.idNum); 

它只是打印(空)。 (當他們在一次執行中一個接一個地執行時,它反序列化就好)

我很感激幫助。

+0

試試這個:1.從模擬器運行,2.停止,3.檢查MAC地址上保存的文件是否存在。 – user523234 2012-07-07 19:18:26

+0

嘗試過,不起作用...文件保持空白。 – user1508829 2012-07-08 14:34:45

回答

0

問題是你在哪裏寫你的文件?因爲您不允許在iOS系統中編寫文件。

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

文檔目錄通常是一個地方,你可以寫文件,所以你可能想試試。

相關問題