Foreign keys RestKit外键关系映射不工作

Foreign keys RestKit外键关系映射不工作,foreign-keys,mapping,restkit,Foreign Keys,Mapping,Restkit,我有一个用户对象,它的属性如下IDS NSArray-可转换的核心数据类型,关系如下 然后在restkit中,我有以下连接描述 当我检查mappingResult对象时,设置了以下ID,但没有完成关系。http响应提供了一个包含两个用户对象的用户集合;跟随者和跟随者 lldb po[mappingResult.array firstObject] <AOUser: 0x7feea8ea5940> (entity: AOUser; id: 0xd000000000040000 <

我有一个用户对象,它的属性如下IDS NSArray-可转换的核心数据类型,关系如下

然后在restkit中,我有以下连接描述

当我检查mappingResult对象时,设置了以下ID,但没有完成关系。http响应提供了一个包含两个用户对象的用户集合;跟随者和跟随者

lldb po[mappingResult.array firstObject]

<AOUser: 0x7feea8ea5940> (entity: AOUser; id: 0xd000000000040000 <x-
coredata://E1732DA6-BAEB-4E6E-BC7D-F0944A2CD5B5/AOUser/p1> ; data: {
userId = 2;
follower = "<relationship fault: 0x7feeade18c80 'follower'>";
    followingIds = "(\n    35\n)";
    followings =     (
    );
}

问题似乎是因为以下ID存储为字符串而不是数组:

followingIds = "(\n    35\n)";
大概是因为RestKit不能告诉您希望它作为一个数组,因为它只是可转换的


您需要更新代码,以便以下id引用所有状态类型为NSArray,然后RestKit应该希望维护JSON中的数据类型,并与外部id列表匹配,而不是单个无效id。

无法从中看出任何东西,因为您没有显示与对象相关的映射代码或示例JSON日志是多对多关系吗?@wain我已根据请求进行编辑,但在核心数据中,以下ID是可转换的。lldb po[[mappingResult.array objectAtIndex:1]following id]4好的,那可能只是一个日志记录。将需要打开跟踪日志记录,以查看在外键连接期间发生的详细情况。这也可能与我考虑过RKUnionAssignmentPolicy有关,但找不到为AddConnectionForRelationship定义分配策略的方法是的,我认为这可能是一个疏忽——RKRelationshipConnectionOperation中一个相对不常见的用例的一个bug,其中没有考虑分配策略。因此为了克服这个限制,映射完成后,我将手动连接对象?你认为呢?
+ (RKEntityMapping *)mapping
{
    RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName:[self entityName]
                                                         inManagedObjectStore:[RKManagedObjectStore defaultStore]];

    [entityMapping addAttributeMappingsFromDictionary:@{
                                                        @"id":                      @"userId",
                                                        @"followingIds":            @"followingIds",
                                                        @"username":                @"username",
                                                        @"email":                   @"email",
                                                        @"profile.pro":             @"pro",
                                                        @"profile.type":            @"type",
                                                        @"profile.country":         @"countryCode",
                                                        @"social.facebook":         @"facebook",
                                                        @"social.youtube":          @"youtube",
                                                        @"social.twitter":          @"twitter",
                                                        @"social.instagram":        @"instagram",
                                                        @"created":                 @"timestamp"
                                                        }];
    entityMapping.identificationAttributes = @[ @"userId" ];

    RKRelationshipMapping *relationship = [RKRelationshipMapping relationshipMappingFromKeyPath:@"medias" toKeyPath:@"medias" withMapping:[AOMedia mapping]];
    relationship.assignmentPolicy = RKUnionAssignmentPolicy;
    [entityMapping addPropertyMapping:relationship];

    relationship = [RKRelationshipMapping relationshipMappingFromKeyPath:@"settings" toKeyPath:@"settings" withMapping:[AOSetting mapping]];
    relationship.assignmentPolicy = RKUnionAssignmentPolicy;
    [entityMapping addPropertyMapping:relationship];

    [entityMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"cover" toKeyPath:@"cover" withMapping:[AOMedia mapping]]];
    [entityMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"avatar" toKeyPath:@"avatar" withMapping:[AOMedia mapping]]];
    [entityMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"stats" toKeyPath:@"stats" withMapping:[AOUserStat mapping]]];
    [entityMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"likes" toKeyPath:@"likes" withMapping:[AOLike mapping]]];
    [entityMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"favorites" toKeyPath:@"favorites" withMapping:[AOFavorite mapping]]];

    [entityMapping addConnectionForRelationship:@"followings" connectedBy:@{@"followingIds": @"userId"}];
    [entityMapping setAssignsDefaultValueForMissingAttributes:YES];

    return entityMapping;
}
followingIds = "(\n    35\n)";