在執行其他操作之前,如何等待plist寫操作完成?如何等待plist寫操作完成?
// Write plist file
NSString *pathToPlist = [NSString pathWithComponents:@[[Util documentsDirectoryPath], @"Settings.plist"]];
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithContentsOfFile:pathToDocumentsPlist];
[dic setObject:@"SomeObject" @"SomeKey"];
[dic writeToFile:pathToDocumentsPlist atomically:YES];
// Read plist file
NSDictionary *updatedDictionary = [NSDictionary dictionaryWithContentsOfFile: pathToPlist];
在這種情況下,我想updatedDictionary
有更新的plist的值,然而,plist中寫入方法(writeToFile
)似乎是異步的,並且需要的時間量來完成。因此,updatedDictionary
傾向於讀取舊的而不是更新的配置,因爲在讀取plist時,保存操作未完成。
如何解決此問題?只是一個純粹的猜測,可以設置atomically:NO
可能有幫助嗎?謝謝!
'將writeToFile:原子:'是同步的,該方法返回時結束。您發佈的代碼是從您寫入的不同路徑讀取的。 – rmaddy
'pathToPlist'和'pathToDocumentsPlist'似乎都指向相同的路徑,儘管它們是2個'NSString'對象,但這個問題可以解決嗎? – lwxted
'pathToDocumentsPlist'是較早創建的'NSString','pathToPlist'稍後單獨創建。如果'writeToFile:atomically:'是同步的,我會試着找出自己出了什麼問題。謝謝:) – lwxted