您好我是iOS
的初学者,并创建了我的第一个核心数据应用。我创建了我的模态并将其包含在项目中。它确实包含实体' CustomerOrder'。
存储后:
NSArray *theArray = [[notification userInfo] objectForKey:@"myArray"];
NSEntityDescription *entityDesc=[NSEntityDescription entityForName:@"CustomerOrder" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *request=[[NSFetchRequest alloc]init];
[request setEntity:entityDesc];
for (NSDictionary * dict in theArray)
{
NSManagedObject * newEntry =[[NSManagedObject alloc]initWithEntity:entityDesc insertIntoManagedObjectContext:self.managedObjectContext];
[newEntry setValue:[dict objectForKey:@"customer_id"] forKey:@"customer_id"];
[newEntry setValue:[dict objectForKey:@"ExecutedOrderCount"] forKey:@"executedOrderCount"];
[newEntry setValue:[dict objectForKey:@"order_id"] forKey:@"order_id"];
[newEntry setValue:[dict objectForKey:@"outletLatitude"] forKey:@"outletLatitude"];
[newEntry setValue:[dict objectForKey:@"outletLongitude"] forKey:@"outletLongitude"];
[newEntry setValue:[dict objectForKey:@"trigger_days"] forKey:@"trigger_days"];
[newEntry setValue:[dict objectForKey:@"trigger_end_date"] forKey:@"trigger_end_date"];
[newEntry setValue:[dict objectForKey:@"trigger_from_time"] forKey:@"trigger_from_time"];
[newEntry setValue:[dict objectForKey:@"trigger_no_days"] forKey:@"trigger_no_days"];
[newEntry setValue:[dict objectForKey:@"trigger_radius"] forKey:@"trigger_radius"];
[newEntry setValue:[dict objectForKey:@"trigger_start_date"] forKey:@"trigger_start_date"];
[newEntry setValue:[dict objectForKey:@"trigger_to_time"] forKey:@"trigger_to_time"];
NSLog(@"Log %@", newEntry);
NSError * error = nil;
if ([self.managedObjectContext save:&error] == NO)
{
NSLog(@"CANNOT SAVE: %@", error);
}
else {
NSLog(@"SUCCES, go check the sqlite file");
}
}
我正在获取此日志成功,请检查sqlite文件。但是我无法在sqllite文件中看到任何表。如果我拿到我,我得到:
"<CustomerOrder: 0x92ba2a0> (entity: CustomerOrder; id: 0x927a8e0 <x-coredata://49FB2963-C998-4237-BB63-5D00E2B194D5/CustomerOrder/p102> ; data: <fault>)"
答案 0 :(得分:0)
您正在使用Core Data,它是Apple提供的SQLite的包装器,因此它具有ORM体系结构,因此它以自己的方式使用SQLite。只关注实体和数据包含在其中。它以自己的方式保存数据,而不是像在SQLite中那样思考。
SQLite文件的工作和制作风格与Core Data不同,我们可以使用它,因为我们想要使用它。我们可以制作表格和列。但Core Data在数据库领域的工作方式完全不同。
希望这会对你有所帮助。
答案 1 :(得分:0)
这一行:
"<CustomerOrder: 0x92ba2a0> (entity: CustomerOrder; id: 0x927a8e0 <x-coredata://49FB2963-C998-4237-BB63-5D00E2B194D5/CustomerOrder/p102> ; data: <fault>)"
不是错误。这就是Core Data的工作原理。获取对象时,在通过查找一个或多个属性值请求它们之前,不会加载其属性。在此之前,对象是错误。
如果您要使用Core Data,您应该了解它的工作原理。这是Core Data的一个非常基本的部分。