我有一个案例,我应该通过UIViewController
将对象插入实体。我设计了我的数据库模型(实体和属性)。我正在通过UIViewController
添加实体。我应该在appDelegate.m中的didFinishLaunchingwithOptions
方法中添加什么?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch
return YES;
}
对于TUTViewController
(我自己的视图控制器 - UIViewController
),我使用下面的代码插入对象。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
NSString *stripped1 = [response stringByReplacingOccurrencesOfString:@"\r" withString:@""];
NSMutableArray *rows = [NSMutableArray arrayWithArray:[stripped1 componentsSeparatedByString:@"\n"]];
NSMutableArray *contentArray = [NSMutableArray arrayWithCapacity:[rows count]];
NSMutableArray *contentArray1 = [NSMutableArray arrayWithCapacity:[rows count]];
NSArray *components;
NSLog(@"count:%d",[rows count]);
for (int i=0;i<[rows count]; i++) {
if(i == 0 || [[rows objectAtIndex:i] isEqualToString:@""]){
continue;
}
components = [[rows objectAtIndex:i] componentsSeparatedByString:@","];
id x = [components objectAtIndex:0] ;
id y = [components objectAtIndex:1];
id z = [components objectAtIndex:2];
[contentArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x,@"X",y,@"Y", nil]];
[contentArray1 addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x,@"X",z,@"Y", nil]];
[newManagedObject setValue:[x] forKey:@"timeStamp"];
[newManagedObject setValue:[y] forKey:@"beat"];
[newManagedObject setValue:[z] forKey:@"rate"];
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
NSLog(@"Contents of Uterus Contraction: %@",contentArray);
NSLog(@"Contents of Heart Beat: %@",contentArray1);
}
}
}
有什么我想念的吗?我最终得到了错误:
由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:'+ entityForName:不能 找到实体名称'FetalData''
的NSManagedObjectModel
答案 0 :(得分:0)
您是否设置了核心数据堆栈或UIManagedDocument
对象?
如果您没有设置托管对象模型,则可能是问题所在。这意味着您可能没有加载定义FetalData
实体的托管对象模型。有关详细信息,请参阅insertnewobjectforentityforname。
我真的建议创建一个空项目,让Xcode为你创建Core Data的东西。通过这种方式,您可以看到代码的工作原理。
一些笔记
为什么使用NSFetchResultsController
?
在方法结束时移动save
来电。通过这种方式,您可以避免多次往返磁盘。
如果您想开始使用Core Data,我建议您core-data-on-ios-5-tutorial-getting-started。
希望它有所帮助。