gpt4 book ai didi

ios Restkit - 使用另一个列表中的列表映射对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:05 25 4
gpt4 key购买 nike

我正在尝试使用 Restkit 映射对象。我在映射正常的 JSON 响应时没有问题。在这种情况下,我遇到了问题,因为我想使用此配置映射响应:

{
"id": 161,
"text": "usertest",
"test": {
"id": "1",
"beginDate": "17/04/2013",
"expectedDuration": "45 minutes",
"finishDate": "17/04/2013",
"groups": [
{
"id": 71,
"text": "some text",
"number":"number"
},
{
"id": 81,
"text": "some anothertext
}
]
...
}

如您所见,我有一个具有三个属性(id、文本和测试列表)的主对象。每个测试都有一些属性(id、beginDate、...、)。每个测试还有一个组列表。这是我的问题。当我尝试映射它时,restkit 无法映射“组”列表。

我用这段代码映射它:

//### TEST
RKEntityMapping *testCompleteMapping = [RKEntityMapping mappingForEntityForName:@"UserTest" inManagedObjectStore:managedObjectStore];
[testCompleteMapping addAttributeMappingsFromDictionary:@{
@"id": @"usertestID",
}];

RKEntityMapping *usertest_TestMapping = [RKEntityMapping mappingForEntityForName:@"Test" inManagedObjectStore:managedObjectStore];
[usertest_TestMapping addAttributeMappingsFromDictionary:@{
@"id": @"testID",
@"beginDate": @"beginDate",
@"expectedDuration":@"expectedDuration",
@"finishDate": @"finishDate",
}];

RKRelationshipMapping* usertest_Test_Relationship = [RKRelationshipMapping relationshipMappingFromKeyPath:@"test" toKeyPath:@"test" withMapping:usertest_TestMapping];

//### GROUPS

RKEntityMapping *groupTestMapping = [RKEntityMapping mappingForEntityForName:@"QuestionGroup" inManagedObjectStore:managedObjectStore];
[groupTestMapping addAttributeMappingsFromDictionary:@{
@"id": @"groupID",
@"number": @"number",
@"text":@"text",
}];

RKRelationshipMapping* group_Test_Relationship = [RKRelationshipMapping relationshipMappingFromKeyPath:@"groups" toKeyPath:@"groups" withMapping:usertest_TestMapping];


//### ADD PROPERTY MAPPINGS

RKResponseDescriptor *CompleteTestResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:testCompleteMapping pathPattern:@"/api/module/demo2/lesson/Phasellus/test/71" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];


[testCompleteMapping addPropertyMappingsFromArray:[NSArray arrayWithObjects:usertest_Test_Relationship, nil]];
[usertest_TestMapping addPropertyMapping:group_Test_Relationship];

[objectManager addResponseDescriptor:CompleteTestResponseDescriptor];

我也尝试过使用“test.groups”而不是“groups”,但没有成功。

最佳答案

试试下面的代码。你的主要问题似乎是一个拼写错误(在 group_Test_Relationship 的定义中),你还缺少一些标识属性(不是严格要求的)但通常代码在正确的路径上。

您没有显示您对 testCompleteMapping 的定义,因此您需要添加它并检查拼写错误。

//### TEST

RKEntityMapping *usertest_TestMapping = [RKEntityMapping mappingForEntityForName:@"Test" inManagedObjectStore:managedObjectStore];
[usertest_TestMapping addAttributeMappingsFromDictionary:@{
@"id": @"testID",
@"beginDate": @"beginDate",
@"expectedDuration": @"expectedDuration",
@"finishDate": @"finishDate",
}];
usertest_TestMapping.identificationAttributes = @[ @"testID" ];

//### GROUPS

RKEntityMapping *groupTestMapping = [RKEntityMapping mappingForEntityForName:@"QuestionGroup" inManagedObjectStore:managedObjectStore];
[groupTestMapping addAttributeMappingsFromDictionary:@{
@"id": @"groupID",
@"text": @"text",
}];
groupTestMapping.identificationAttributes = @[ @"groupID" ];

[usertest_TestMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"groups" toKeyPath:@"groups" withMapping:groupTestMapping]];


// complete your 'testCompleteMapping' here, adding the 'test' relationship property mapping to 'usertest_TestMapping' if required


//### ADD PROPERTY MAPPINGS

RKResponseDescriptor *completeTestResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:testCompleteMapping pathPattern:@"/api/module/demo2/lesson/Phasellus/test/71" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[objectManager addResponseDescriptor:completeTestResponseDescriptor];

关于ios Restkit - 使用另一个列表中的列表映射对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473484/

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