我有一个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数据直接插入核心数据吗?
答案 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)
要向核心数据插入任何内容,您需要生成模型。创建核心数据模型编辑器(如果您没有)并添加实体。网上有很多教程如何做。