2015-07-19 152 views
0

我正在学Objective-C的iOS开发。我有一个有很多数据的plist,并希望将它们导入到应用程序中。此plist包含一个商店,其中包含:位置(映射为实体),法院(映射为实体),标题,副标题,地址,电话号码和类别(映射为实体)。我一直在研究,发现其中一个解决方案是使用CoreData + MagicalRecord。正确使用CoreData和MagicalRecord

这里是我的映射(可能会提出修改建议): mapping

选择附近后,你有一个类别表(这应该是该类别的实体),此表是一个主要的“细分” plist中。在他选择类别之后,应用程序将获取第二个表格,该表格显示每个包含点击类别的商店。 storyboard

在我CategoriaViewController(CategoryViewController)我要加载所有商店的所有类别的方法,但不知道如何使用MagicalRecord保存的plist的类别在类别实体,它显示在桌面上。在我的方法中,我甚至实例化类实体,但不知道如何使用它。

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

- (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

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

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

把整个事情变成saveWithBlock块将其保存在后台存储。

+0

确切地说,我认为/认为一个实体与一个表相关。那么,saveWithBlock方法在哪里? –

+0

太好了,就接受答案吧。 – Mundi