我試圖更改對象屬性的值(從.plist取消存檔),並且它似乎不工作......我試圖出了什麼錯了一段時間了,我真的很感激任何幫助。對象屬性的更改值不適用於使用NSKeyedUnarchiver創建的對象
驗證碼:
NSArray * pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * pathToSave = [[pathArray objectAtIndex:0] stringByAppendingPathComponent:@"ownProfileArchive"];
OwnProfileData * OwnProfile = [NSKeyedUnarchiver unarchiveObjectWithFile:pathToSave];
[OwnProfile setName:[NameField text]]; // at that point, even if I change the name to a string saying "Hello!", It would always be NULL!
NSLog(@"Name = %@", [OwnProfile Name]); // Here I can see it is always null.
[NSKeyedArchiver archiveRootObject:OwnProfile toFile:pathToSave];
現在,我第一次這樣運行,這是可能沒有在指定的路徑下的文件,我假定應用程序「不介意」,因爲文檔說NSKeyedArchiver將創建一個文件,如果沒有一個存在。問題是:如果沒有文件,Will創建對象(NSKeyedUnarchiver)的代碼將創建一個功能對象,因爲它確實返回值'NULL',但我無法更改它...如果一個文件存在,檢查文件是否存在,如果不存在,創建一個文件的代碼是什麼? (我想會有一個If-Else條件涉及,但我不知道條件是什麼以及如何創建一個新文件...)。
乾杯幫了我很多......真的很難調試那種有工作人員。 – byteSlayer 2012-07-07 19:11:49
嗨,我已經嘗試編寫代碼來檢查文件是否存在,看起來像這樣:BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:pathToSave];現在事情是,它永遠是真的!它返回true,然後繼續從存檔中創建對象,但之後它會像以前一樣返回null,即使根據文件管理器存在一個文件。於是我繼續檢查了我的項目的「文檔」文件夾,並驚喜地發現,沒有任何文件。那麼你有什麼建議嗎?如果不是,是否可以自己創建一個文件並讓它始終在那裏? – byteSlayer 2012-07-07 19:27:09
您是否檢查過pathToSave變量,並對其進行了完整性檢查?最後一次,我發現自己的大腦存在着關於文件的問題,我正在查看錯誤的模擬器的文檔文件夾(即,文件存在於我的5.0中,但不是我的5.1,應用程序在5.0上運行,我在5.1中查找)... ...用於創建您自己的文件;你絕對可以這樣做:-)但這可能是另一個SO問題;-) – 2012-07-07 19:36:33