【发布时间】:2014-02-23 19:47:44
【问题描述】:
我正在编写一个将一些 json 数据转换为核心数据的程序。我可以填充实体,当我尝试填充关系的实体时出现问题。
我尝试了很多不同的东西,但这是我现在所拥有的:
NSArray *jsonArray = [NSJSONSerialization
JSONObjectWithData:responseData
options:NSJSONReadingMutableContainers
error:&error];
Group *groupModel = [NSEntityDescription
insertNewObjectForEntityForName:@"Group"
inManagedObjectContext:context];
//NSLog(@"%@", jsonArray);
for (NSDictionary *array in jsonArray)
{
groupModel.name = [array valueForKey:@"name"];
NSSet *itemSet = [array valueForKey:@"items"];
NSLog(@"%@", itemSet);
groupModel.deck = itemSet;
for (NSDictionary *item in [array valueForKey:@"items"])
{
//groupModel.deck = telephoneSet;
}
//NSLog(@"%@", [array valueForKey:@"name"]);
//NSLog(@"%@", [array valueForKey:@"items"]);
}
我已经尝试了各种方法来插入这些数据,但我无法弄清楚。我知道我的班级 Group 与 Deck 有关系:
@property (nonatomic, retain) NSSet *deck;
所以我试图传递从 json 转换的 NSSet,但我无法完全弄清楚。我尝试过以各种不同的方式循环它并将其转换为不同的类型。
[
{
"name": "Default",
"items": [
{
"name": "Name 1",
"weapon": "Weapon 1",
"type": "Type 1"
},
{
"name": "Name 2",
"weapon": "Weapon 2",
"type": "Type 2"
}
]
}
]
需要将数组中的项目转换为集合并传递给组属性。这是我想不通的部分。
甲板.h:
@interface Deck : NSManagedObject
@property (nonatomic, retain) NSString * info;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * type;
@property (nonatomic, retain) NSString * weapon;
@property (nonatomic, retain) Group *group;
组.h
@interface Group : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *deck;
@end
@interface Group (CoreDataGeneratedAccessors)
- (void)addDeckObject:(Deck *)value;
- (void)removeDeckObject:(Deck *)value;
- (void)addDeck:(NSSet *)values;
- (void)removeDeck:(NSSet *)values;
【问题讨论】:
-
显示模型/实体类标题。考虑看看 RestKit。
-
另外,你为什么要命名一个字典变量
array,而itemSet将是一个NSArray,即使你希望它可能是一个NSSet... -
我添加了类头
-
Wain,就像我说的那样,我已经为此工作了很长时间。我已经更改了很多代码并尝试了很多不同的东西。每次尝试不同的东西时,我都没有更改变量数组。