正确使用CoreData和MagicalRecord

时间:2015-07-19 21:50:55

标签: ios objective-c core-data

我正在使用Objective-C学习iOS开发。我有一个包含大量数据的plist,并希望将它们导入到应用程序中。此plist包含一个商店,其中包含:location(映射为实体),court(映射为实体),title,subtitle,address,phone number和category(映射为实体)。我一直在研究并发现其中一个解决方案是使用CoreData + MagicalRecord。

这是我的映射(可能会建议更改): mapping

选择邻域后,你有一个类别表(应该是类别实体),这个表是一个"细分"主要的plist。在选择类别后,应用程序将获取第二个表,该表显示包含所单击类别的每个商店。 storyboard

在我的CategoriaViewController(CategoryViewController)中,我有一个方法来加载所有商店的所有类别,但不知道如何使用MagicalRecord将类别实体中的类别保存并在表格中显示。在我的方法中,我甚至实例化了类别实体,但不知道如何使用它。

这是我的方法(已翻译):

- (void) loadCategories {
self.category = [Category MR_createEntity];
self.listOfCategories = [[NSMutableArray alloc] init];
NSString *path = [[NSBundle mainBundle] pathForResource:@"Category" ofType:@"plist"]
NSDictionary *myPlist = [NSDictionary dictionaryWithContentsOfFile:path];
self.listOfCategories = [myPlist objectForKey:@"categories"];
}

here's我的全班。

1 个答案:

答案 0 :(得分:1)

您的混淆源于您认为某个实体是一张桌子。但不,它只是对象图中的一个对象。您必须为要插入的每个对象调用MR_createEntity

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
    for (NSString *name in listOfCategories) {
      Category *newCategory = [Category MR_createEntity];
      newCategory.name = name;
    }
}

将整个内容放入saveWithBlock块中,以便在后台将其保存到商店。