2014-01-06 15 views
2

我正在爲iPad遊戲編寫保存遊戲功能,而且實際上只需要1次存儲遊戲。但是,我不確定是否應該解釋某種存儲遊戲損壞,並使用當前/前一次保存以防萬一發生損壞。iOS,將writeToFile:原子地:YES永不失敗?

能iOS設備的事件,中斷的原子寫操作和損壞狀態離開我救?我在說關於設備被關閉,多任務處理,主頁按鈕,電話等等的東西。我知道原子的定義不應該,但我想確認一下。

+(void)writeSaveGameData:(NSData*)data 
{ 
    if(data == nil) 
    { 
     return; 
    } 
    [data writeToFile:[SaveGame savegamePath] atomically:YES]; 

} 

+(NSData*)saveGameData 
{ 
    return [NSData dataWithContentsOfFile:[SaveGame savegamePath]]; 
} 
+0

@Wooble這個問題問和答案寫要麼完全是否完成或不破壞文件失敗。這個問題問在什麼情況下可能會發生故障。我認爲這是一個好的,新穎的問題。 – danh

+1

沒有這樣的情況,這是另一個問題中給出的答案。 – geoffspear

+0

我認爲你錯過了沒有完成寫入和沒有完成寫入的區別。後者沒有任何情況。該方法返回BOOL,從文檔== YES **如果操作成功,否則NO。** – danh

回答

2

不,這並不意味着它永遠不會失敗,原子意味着兩件事情:

1 - 您的文件會正確保存,你將有沒有打開,直到它完全保存,有沒有辦法獲得一半保存的文件或類似的東西。

2 - 如果在保存過程中它不會在所有的保存有一個問題。所以,如果您的電池在保存過程中結束,您將丟失文件。

要完全回答你的問題,有沒有辦法有一個損壞的文件,如果該設備的中斷你的寫作以任何理由,你將失去的文件。你擁有全部或全部!

,如果你是保存新文件或更新舊的。如果要更新的文件,只需更新將會丟失,如果你正在寫一個新的文件,你將失去一切你沒有提到。

+0

你的措辭是一種誤導。您可以獲取新文件或原始文件。你無法得到的是部分新文件或根本沒有文件。你的回答意味着整個文件可能會丟失。那是不正確的。您可能會丟失最新的更新,但至少以前的文件仍然存在。 – rmaddy

+0

如果他正在保存一個新的,他將失去一切,如果他正在更新,他將失去更新並獲得原始文件。 –

相關問題