2011-05-16 66 views
5

我的資源包中有一個plist,我通過文件夾引用進行復制。由於某種原因,我編輯的&保存(在Xcode中)plist不會被複制/更新,直到我刪除應用程序。否則,舊的plist(在編輯之前)會被複制過來,即使我刪除了該應用程序。數據是否遺留下來?構建&運行:plist沒有更新

plist經常編輯,因此調試非常費時。我如何確保plist被正確複製?

+0

卸載並重新安裝在調試環境中解決了我的問題...謝謝 – 2014-03-27 11:21:09

回答

1

你正在複製文檔文件夾中的plist文件嗎?如果您正在複製該文件,那麼您必須在每次啓動應用程序時從iPhone模擬器中刪除該應用程序。

您也可以做一件事..您可以在每次啓動應用程序時將文件複製到文檔文件夾中。 由於文檔文件夾的內容只能通過從模擬器/設備中刪除應用程序來刪除。

然後沒有必要重新啓動模擬器/設備和xcode。

+0

plist複製到資源包中,而不是在Documents中。所以我希望資源數據在應用程序被刪除時被刪除,但是單獨刪除應用程序不會。 – Morrowless 2011-05-16 06:42:03

+0

否來自資源的數據無法刪除,您必須手動刪除它。順便說一句:如果你沒有複製文件中的文件,那麼你將無法編輯它。 – Saurabh 2011-05-16 06:43:46

+0

我應該清楚,編輯是在Xcode中完成的,而不是運行時。 – Morrowless 2011-05-16 06:49:11

0

這是一個laaate的答案;但是,嘿,OP沒有標記正確的答案,所以這裏是我的解決方案。我創建了兩個屬性列表。第一個是調試信息,如常數,字符串和布爾值。我把這個房產名單叫做SETTINGS.plist。我的另一個plist是我用來保存遊戲數據的。由於SETTINGS plist是我通過xcode接口更新的,我每次運行應用程序時都會更新它。

-(void)setUpPlist{ 

listPath = [[self docsDir] stringByAppendingPathComponent:@"SETTINGS.plist"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:listPath]) { 
    [[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle] pathForResource:@"SETTINGS" ofType:@"plist"] toPath:listPath error:nil]; 

} 
else { 
    [[NSFileManager defaultManager] removeItemAtPath:listPath error:nil]; 
    [[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle] pathForResource:@"SETTINGS" ofType:@"plist"] toPath:listPath error:nil]; 
} 

savedData = [NSMutableDictionary dictionaryWithContentsOfFile:listPath]; 
} 

-(NSString *)docsDir{ 
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
} 

這裏,listPath是NSString類型的,並且是savedDate NSMutableDictionary類型。希望這可以幫助。