我試圖重新創建絕對最簡單的核心數據示例,我可以找到,但我仍然遇到了一個問題。看來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文件中在所有。
我做錯了什麼?這段代碼非常複製和粘貼,所以我真的不知道我做錯了什麼。
你有沒有所謂的 「拯救」 上的NSManagedObjectContext? – borrrden 2013-02-25 11:34:19
「NSManagedObjectContext」充當暫存器 - 僅僅是因爲添加了一些內容並不意味着它已經寫入數據庫。正如borrrden所暗示的那樣,您可能需要調用'save'或者另外安排保存(例如,使用通知) – 2013-02-25 11:37:13
save語句在哪裏?如果你不保存你的更改,你不應該驚訝於新的實體沒有出現在SQLite數據庫中。 – 2013-02-25 11:51:23