插入Core Data
突然停止工作。 我使用以下代碼設置了我的persistentStoreCoordinator
。請注意0是Spot.sqlite
。未插入CoreData對象
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Spot.sqlite"];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _persistentStoreCoordinator;
}
我運行應用程序,並執行
cd ~/Library/Application Support/iPhone Simulator/7.0/Applications
find . -name MyAppName
A1DF7916-AE39-4367-BFD2-22A8BAA2AFD2
cd A1DF7916-AE39-4367-BFD2-22A8BAA2AFD2/Documents
ls
(results) Spot.sqlite Spot.sqlite-shm Spot.sqlite-wal
sqlite3 Spot.sqlite
sqlite> .tables
ZMYCATEGORY Z_METADATA Z_PRIMARYKEY
sqlite> select * from ZMYCATEGORY;
,並顯示沒有結果,但我得到一個線路輸出,當我選擇Z_METADATA
內容。
這是我使用的管理對象上下文對象插入代碼:
+ (void)insertParentCategoriesIntoCoreDataFromArray:(NSArray *)array {
ROAppDelegate *delegate = (ROAppDelegate *)[UIApplication sharedApplication].delegate;
NSManagedObjectContext *managedObjectContext = [delegate managedObjectContext];
NSEntityDescription *categoryEntity = [NSEntityDescription entityForName:@"ROCategory" inManagedObjectContext:managedObjectContext];
for (int i = 0; i < [array count]; i++) {
ROCategory *category = [[ROCategory alloc] initWithEntity:categoryEntity insertIntoManagedObjectContext:managedObjectContext];
NSArray *mySQLRow = [array objectAtIndex:i];
NSString *name = [mySQLRow objectAtIndex:1];
[category setValue:name forKey:@"name"];
}
}
當我通過這段代碼步驟,它是如我所料執行。沒有錯誤發生。但仍然相關的sqlite表是空的,當我運行下面的代碼時,我得到一個空的結果集。
...
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"name ==[c] \'%@\'", key]]; // the [c] means case-sensitive
[request setEntity:categoryEntity];
NSError *error;
fetchedObjects = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
記得保存。 – Kevin