gpt4 book ai didi

ios - NSJSON序列化到核心数据

转载 作者:行者123 更新时间:2023-11-29 12:53:01 26 4
gpt4 key购买 nike

我正在编写一个将一些 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"]);
}

我已经尝试了各种方法来插入这些数据,但我无法弄清楚。我知道我的类(class)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"
}
]
}
]

数组中的项目需要转换成一个集合并传递给组属性。那是我想不通的部分。

Deck.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 来帮助解决这个问题。

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

  1. 您永远不会创建 Deck 的任何实例。你需要。您正在尝试将字典数组设置为 deck,它需要一组 Deck 对象。

基本上,在您的 for (NSDictionary *item ... 循环中,您应该做的第一件事是创建一个 Deck 实例。然后使用 配置它>item 字典内容。然后调用:

[groupModel addDeckObject:deck];

(不要费心尝试为所有 Deck 对象设置 NSSet,因为无论如何您都需要迭代)。

关于ios - NSJSON序列化到核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21973574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com