将JSON数组插入核心数据实体

时间:2017-01-08 09:18:30

标签: ios objective-c json core-data model

我有一个REST API返回给我现有的应用程序的JSON,我正在尝试修复它。我对目标C相当新。

[
{
"Activities":"
         [
           {
             "activityid":845,
             "activityname":"Registration and networking breakfast",
             "actvitydesc":"Registration and networking breakfast",

           },
           {
             "activityid":846,
             "activityname":"Plenary session: The Workforce Tsunami",
             "actvitydesc":"It's Time to Rethink Talent 

           }
}
]

我的应用中有一个核心数据实体Activity,其中包含以下属性 Activityid activityname activitydesc

如何在核心数据实体中插入JSON数据?有没有必要创建模型类来做到这一点?我可以在不创建模型对象的情况下将我的json数据直接插入核心数据吗?

2 个答案:

答案 0 :(得分:1)

如果您已经拥有名为Activity的实体,则可以使用NSManagedObject类来设置Attribute的值。试试这个

NSManagedObject *managedObject = [NSEntityDescription insertNewObjectForEntityForName:@"Activity" inManagedObjectContext:_managedObjectContext];

[managedObject setValue:[NSNumber numberWithInteger:4711] forKey:@"activityid"];

依旧...... 你也可以通过XCode 8中的CoreData的Classgenerator创建类有多种方法。默认情况下,该类是自XCode 8以来自动生成的。如果您不喜欢这样,您可以禁用它并手动生成类。只需转到CoreData模型 - >编辑 - >创建NSManagedObject子类。请注意,您必须先停用自动代码生成。如果你不这样做,你将在构建项目时出错。 如果JSON属性的名称等于CoreData属性的名称,您还可以循环遍历Dictionary,如下所示:

NSArray *wrapper = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil];
for(NSDictionary *dict in wrapper){
    NSArray *activities = [dict objectForKey:@"Activities"];
    for(NSDictionary *activity in activities){
        NSManagedObject *managedObject = [NSEntityDescription insertNewObjectForEntityForName:@"Activity" inManagedObjectContext:_managedObjectContext];

       // [managedObject setValue:[NSNumber numberWithInteger:4711] forKey:@"activityid"];
        for(NSString *attributeName in activity)
            [managedObject setValue:[activity objectForKey:attributeName] forKey:attributeName];

    }
}

希望能帮到你......

答案 1 :(得分:0)

要向核心数据插入任何内容,您需要生成模型。创建核心数据模型编辑器(如果您没有)并添加实体。网上有很多教程如何做。