0

目前我正在使用以下 JSON 格式,它是 SharePoint REST 服务的一个片段:

{results:[
   {uri:"https://site.com/_api/Web/Lists(guid'43963c38-4d1c-4734-8b2d-22dc0b92908c')"},
   {uri:"https://site.com/_api/Web/Lists(guid'5363c738-7d9d-9774-6b2d-52dc0b93903d')"}]
}

我有以下对象映射:

RKEntityMapping *listMapping = [RKEntityMapping mappingForEntityForName:@"SPList" 
    inManagedObjectStore:managedObjectStore];
[listMapping addAttributeMappingsFromDictionary:@{
    @"uri":      @"guid"}];
listMapping.identificationAttributes = @[@"guid"];

但是,在保存到 guid 之前,我想添加逻辑以在保存之前仅从 uri 中检索 guid 部分,因此只有“43963c38-4d1c-4734-8b2d-22dc0b92908c”存储在 guid 字段中。我不知道在哪里添加该逻辑,有人可以帮助我吗?

4

1 回答 1

2

如果需要在映射之前更改返回的 JSON,可以使用 RKSerialization 的实现:

@interface ORRKJsonSerialization : NSObject <RKSerialization>
@end

并实施

@implementation ORRKJsonSerialization

+ (id)objectFromData:(NSData *)data error:(NSError **)error
{
    id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:error];
    // change your data before mapping
    return result;
}

+ (NSData *)dataFromObject:(id)object error:(NSError **)error
{
    return [NSJSONSerialization dataWithJSONObject:object options:0 error:error];
}

@end

然后在设置过程中:

[RKMIMETypeSerialization registerClass:[ORRKJsonSerialization class] forMIMEType:@"application/json"];

高温高压

于 2014-04-04T14:17:59.640 回答