2012-08-08 40 views
0

從Web下載數據並將下載的數據插入到sqlite數據庫。現在我想要的是插入到數據庫中的數據,這些數據在下載時應該在後臺進行,用戶也可以在視圖上執行其他操作。所以在後臺進程中可能會將數據導入sqlite。在後臺進程中將數據插入sqlite

即時通訊使用此,但應用程序崩潰使用此。

NSNumber *number = [NSNumber numberWithInteger:1]; 
NSOperationQueue *queue = [NSOperationQueue new]; 
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self 
                     selector:@selector(InsertIntodatabase) 
                      object:number]; 

[queue addOperation:operation]; 
[operation release]; 

在此先感謝

回答

0

您可以在後臺線程插入數據。但是,如果您同時(或多或少)嘗試從兩個不同的線程訪問數據庫,則會出現難以從中恢復的「數據庫鎖定」錯誤。

所以你需要提供一些外部互鎖來防止來自兩個不同線程的同時訪問。在某些情況下,程序邏輯本身會阻止這種情況發生,在其他情況下,您需要實現顯式鎖定機制。

+0

你能告訴我如何提供外部互鎖......? – user1557103 2012-08-09 01:34:12

+0

那麼,你總是可以使用[NSLock](https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSLock_Class/Reference/Reference.html#//apple_ref/occ/ CL/NSLock)。還有其他選項。 – 2012-08-09 02:58:31

+0

我如何使用NSLock ...我從來沒有使用過任何人都可以粘貼任何示例代碼.. – user1557103 2012-08-09 07:38:57