2013-02-25 76 views
0

我試圖重新創建絕對最簡單的核心數據示例,我可以找到,但我仍然遇到了一個問題。看來SQLite數據庫是根據我的實體創建的,但是沒有實際的數據被添加到它。這是我的.h文件:核心數據沒有保存任何內容,但沒有給出錯誤?

#import <CoreData/CoreData.h> 
#import "AppDelegate.h" 

@interface MainViewController : UIViewController 

@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; 

- (IBAction) createDatabase; 

@end 

而且這裏是我的.m:

#import "MainViewController.h" 

@implementation MainViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 

- (IBAction) createDatabase 
{ 
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    _managedObjectContext = [appDelegate managedObjectContext]; 

    NSManagedObject *myMO = [NSEntityDescription insertNewObjectForEntityForName: @"Book" inManagedObjectContext: _managedObjectContext]; 

    [myMO setValue: [NSNumber numberWithInt: 123] forKey: @"bookID"]; 
    [myMO setValue: @"Example book." forKey: @"book"]; 
    [myMO setValue: @"Example author." forKey: @"author"]; 
    [myMO setValue: @"Example category." forKey: @"category"]; 
    [myMO setValue: [NSNumber numberWithBool: NO] forKey: @"isLiked"]; 
    [myMO setValue: [NSNumber numberWithBool: NO] forKey: @"isDisliked"]; 
} 

@end 

我想不出什麼我做錯了。當我啓動它時,Xcode在應用程序的Documents目錄中創建.sqlite文件,但點擊按鈕調用createDatabase不會導致任何文本(「Example book。」)等被輸入到SQLite文件中在所有。

我做錯了什麼?這段代碼非常複製和粘貼,所以我真的不知道我做錯了什麼。

+0

你有沒有所謂的 「拯救」 上的NSManagedObjectContext? – borrrden 2013-02-25 11:34:19

+0

「NSManagedObjectContext」充當暫存器 - 僅僅是因爲添加了一些內容並不意味着它已經寫入數據庫。正如borrrden所暗示的那樣,您可能需要調用'save'或者另外安排保存(例如,使用通知) – 2013-02-25 11:37:13

+0

save語句在哪裏?如果你不保存你的更改,你不應該驚訝於新的實體沒有出現在SQLite數據庫中。 – 2013-02-25 11:51:23

回答

2

我找不到任何代碼保存您的更改。它應該像

if (![myMO save:&error]) { 
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
} 

請參考以下鏈接以獲得更多幫助

  1. http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html
  2. http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started
  3. https://blog.stackmob.com/2012/11/iphone-database-tutorial-part-1-learning-core-data/
+0

它在AppDelegate中的'applicationWillTerminate'中調用。 – Luke 2013-02-25 11:40:01

+0

雖然顯然它不叫。調用它手動修復它。謝謝:) – Luke 2013-02-25 11:40:59

+0

:S兩者如何相關? – DivineDesert 2013-02-25 11:41:42

相關問題