Ios NSJ对核心数据的序列化

Ios NSJ对核心数据的序列化,ios,json,core-data,Ios,Json,Core Data,我正在编写一个程序,将一些json数据转换成核心数据。我可以填充实体,当我尝试填充关系的实体时,问题就出现了 我尝试过很多不同的方法,但这就是我现在所拥有的: NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers

我正在编写一个程序,将一些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"]);
}
我尝试了各种方法来插入这些数据,但我想不出来。我知道我的班级与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来帮助实现这一点

你有一个主要的基本问题:

  • 您从不创建
    组的任何实例。你需要这样做。您正在尝试将字典数组设置为
    deck
    ,这需要一组
    deck
    对象
  • 基本上,在您的
    for(NSDictionary*项…
    循环中,您应该做的第一件事是创建一个
    Deck
    实例。然后使用
    字典内容对其进行配置。然后调用:

    [groupModel addDeckObject:deck];
    

    (不必费心尝试设置一个
    NSSet
    ,所有
    Deck
    对象都需要迭代)./p>显示模型/实体类头文件。考虑查看REST工具箱。此外,为什么要命名字典变量<代码>数组< /代码>,和<代码> ITEMSET/<代码>将是<代码> NSArray < /代码>,即使您希望它是<代码> NSSET …我添加了类头文件,就像我说的,我已经为此工作了很长时间。我已经改变了。代码编写了很多次,尝试了很多不同的东西。我没有在每次尝试不同的东西时都更改变量数组。我发誓我尝试过这样做,但它一直在说我的一对多关系和崩溃。这次它确实起了作用,所以谢谢你。我看了一下RestKit,但我会再次查看它。