對不起,我看到類似的問題,但他們似乎沒有給我一些完整的答案。我試着把它整理好,這樣人們就不會恨我或我可憐的英語了。
我正在使用Xcode 4.2與故事板和ARC
我可以從我的plist文件中讀取。我的任務只是將更新後的值寫回到我的plist文件中。使用NSDictionary對象寫入plist文件
我的plist包含在主文件夾的「支持文件」子文件夾中(故事板就是這樣)。該文件是調用Global.plist並且GlobalValue2是文件類型字符串的一個元素。
所以讀取文件的部分看起來像這樣
NSString *plistfile = [[NSBundle mainBundle] pathForResource:@"Global" ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:plistfile];
FirstValueTextBox.text = [[dict valueForKey:@"GlobalValue1"] stringValue];
學習它的一些方便的YouTube視頻作品就好了。更新我的文本框的值。
真正的問題出現在我回寫我的plist文件時。當我嘗試以下方法
NSString *plistfile = [[NSBundle mainBundle] pathForResource:@"Global" ofType:@"plist"];
NSMutableDictionary *dict = [NSMutableDictionary
dictionaryWithContentsOfFile:plistfile];
[dict setValue:@"ABC" forKey:@"GlobalValue2"];
SecondValueTextBox.text = [dict valueForKey:@"GlobalValue2"];
[dict writeToFile:plistfile atomically:YES];
結果我真的看到了一個更新的值上彈出第二個文本框,但plist文件保持不變。
以下是我的問題下來休息一下,我對這個問題的猜測
我嘗試使用NSDictionary中(不是的NSMutableDictionary)和呼叫的setValue(在運行時崩潰)
我的猜測:NSDictionary的對象本身是隻讀的,所以當我說增加價值時它會使我崩潰。但是,在編碼時間裏爲什麼不讓我錯誤呢?如果對象是隻讀的我使用NSMutableDictionary可以調用setValue。它不會使我崩潰,當我在「SecondValueTextBox.text = [dict valueForKey:@」GlobalValue2「];」「時調用更新的值;」它真的讓我更新了價值。但是plist文件裏面的內容沒有改變。這是我現在的結果。
我的猜測是:經過一番搜索之後,我認爲「支持文件」也是隻讀的。純粹的猜測確實看到任何人直接談論它。我確實嘗試了多一點,有些人談論了Xcode中的一個讀寫位置的「文檔文件夾」。我想人們也會談論編寫代碼來訪問該文件夾。有人可以在這裏給我看看代碼。
我最後一個問題,我可以將我的Xcode連接到該「文檔文件夾」或我在哪裏可以看到它(真正的文件夾結構不同於我認爲的Xcode內部)。這樣我就可以查看和編輯我的plist文件進行測試,我可以看到真正的結果,而無需使用
我將非常感激代碼和東西,如果人能告訴我,我的猜測是正確的還是錯誤的,回答我的3和4問題。
遺憾。 NSDocumentDirectory或文檔文件夾(或tmp文件夾)1.只存在於運行時? 2.只能找到我必須部署的設備。所以我不能在開發時添加plist?或者3.它是一個讀寫文件夾,但支持的文件夾不是那麼我在那裏複製?或者有其他原因背後呢? – 2012-02-24 17:18:17