sqlite文件显示在ios中找不到使用核心数据的表

时间:2014-03-28 10:21:32

标签: ios sqlite core-data cocos2d-iphone

您好我是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>)"

2 个答案:

答案 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的一个非常基本的部分。