2011-05-24 161 views
1

我創建了一個實體對象,並試圖將其保存到sqllite好說儲蓄進行的,沒有錯誤,但它不會顯示數據庫中的任何建議,以解決核心數據保存

我用下面的代碼

Studies *study_NEW = (Studies *)[NSEntityDescription insertNewObjectForEntityForName:@"Studies" inManagedObjectContext:managedObjectContext_NEW]; 

study_NEW.SudyID = study.SudyID; 
error = nil; 
if (![study_NEW.managedObjectContext save:&error]) { 
// Handle error 
NSLog(@"Unresolved error study %@, %@", error, [error userInfo]); 
abort(); // Fail 
} 
else{ 
NSLog(@"Study inserted successfuly"); 
} 
+0

你是什麼數據庫的意思是......?你在手動查看嗎?只需檢索它的值在您的代碼..... – 2011-05-24 11:58:51

+0

我使用coredata保存和檢索,而檢索沒有返回我得到的SQLite文件,並打開它我發現表研究不包含記錄 – AMH 2011-05-24 12:01:06

+0

請顯示您的代碼用來顯示數據。 – Rayfleck 2011-05-24 12:15:54

回答

2
Studies *study_NEW = (Studies *)[NSEntityDescription insertNewObjectForEntityForName:@"Studies" inManagedObjectContext:managedObjectContext_NEW]; 

//study_NEW.SudyID = study.SudyID; 

[study_NEW setSudyID:[study SudyID]]; 

OR

[study_NEW setSudyID:study.SudyID]; 

error = nil; 
if (![study_NEW.managedObjectContext save:&error]) { 

// Handle error 
NSLog(@"Unresolved error study %@, %@", error, [error userInfo]); 

exit(-1); // Fail 

} 

else{ 

NSLog(@"Study inserted successfuly"); 

} 
1

執行此代碼時,如果NSManagedObjectContext無效,第一行會導致異常。所以我的猜測是你的NSManagedObjectContext沒有連接到你認爲應該連接的持久存儲。檢查你的上下文設置代碼。也許代碼無法將持久性存儲連接到NSPersistentStoreCoordinator

我以爲一個保存發送到NSManagedObjectContext沒有持久性存儲是NOP,沒有任何操作執行,應該總是成功。所以我嘗試了一下我的項目,我評論了一個持久存儲附加到上下文,並運行該程序。該程序試圖保存時拋出異常。因此,您必須擁有持久存儲區,否則發送到上下文的保存消息將導致異常。

那麼什麼是managedObjectContext_NEW?這是你的對象的屬性嗎?它是否有一個訪問器方法,可以創建新的NSManagedObjectContext來破壞舊的上下文,並覆蓋持久存儲?每次訪問該屬性時,您都可以刪除以前保存的任何數據。

此代碼示例沒有問題。問題在於上下文的設置。

+0

成功插入的研究出現在日誌文件,這意味着它插入成功 – AMH 2011-05-24 12:48:47