2011-02-28 50 views
0

我已經編寫代碼,遠程更新我的iPhone應用程序中的SQLite數據庫。新數據庫下載並保存後,它將使用[NSFileManager removeItemAtPath:DBPath]替換舊數據庫[NSFileManager copyItemAtPath:newDBTempPath to:DBPath]。所有這些操作都順利進行。但是,當我之後打開新的數據庫時,如果沒有關閉應用程序並運行一個查詢,我有時只會得到1個結果(我期望的807中的第一個),有時沒有結果。查詢運行時沒有任何錯誤。 然後,當我關閉(關閉)應用程序並重新打開時,相同的查詢將我的807結果返回給我 。這既發生在模擬器上,也發生在真實的iPhone上。幫助w /遠程更新sqlite數據庫

我會做什麼錯?

謝謝!

UPDATE 1:在編程時出現錯誤。現在,當我在Navicat中打開新複製的數據庫時,出現錯誤,下載時出現問題。

UPDATE 2:固定!爲了節省內存,我將每個下載的100KB塊寫入文件,但忘記在NSURLConnection完成時寫入最後一個塊。這導致了一個不完整的文件,DOH!

回答

0

您是否完全確定您的應用程序在更換時已關閉數據庫?如果您在打開文件時觸摸該文件,則可能會在最終階段將其混淆。如果日誌在當時處於打開狀態(這是將定期顯示在數據庫文件旁邊的文件),則這會變成雙倍。

+0

感謝您的快速回復。 我很確定數據庫是關閉的,更新文件的過程發生在加載的第一個(也是唯一的)視圖控制器中。只有在更新後,用戶才能選擇加載第二個視圖控制器,然後使用該數據庫。 另外,一切都很好,如果應用程序關閉並重新打開 – 2011-02-28 16:00:14