【发布时间】:2015-10-29 14:55:23
【问题描述】:
我添加了作为函数结果的响应描述符
class func responseDescriptors() -> [RKResponseDescriptor] {
var successCodes : NSIndexSet = RKStatusCodeIndexSetForClass(RKStatusCodeClass.Successful);
var retResponseDescriptors : [RKResponseDescriptor] = [];
//Settings
retResponseDescriptors.append(RKResponseDescriptor(mapping: BBLocalization.mapping(), method: RKRequestMethod.GET, pathPattern: BBServerAPIPaths.Settings.LanguageTranslate.rawValue, keyPath: nil, statusCodes: successCodes));
retResponseDescriptors.append(RKResponseDescriptor(mapping: BBWakeUP.mapping(), method: RKRequestMethod.GET, pathPattern: "v1.2/user/wakeup", keyPath: nil, statusCodes: successCodes));
//User
retResponseDescriptors.append(RKResponseDescriptor(mapping: BBUser.mapping(), method: RKRequestMethod.GET, pathPattern: "v1.2/user/:userId", keyPath: nil, statusCodes: successCodes));
return retResponseDescriptors;
}
通过调用添加
RKObjectManager.sharedManager().addResponseDescriptorsFromArray(self.responseDescriptors());
映射响应本地化效果很好,但如果我调用wakeUp,它会映射到
to object <BBUser: 0x7fbe306b1210>
如果我没有为用户请求添加响应描述符
//User
//retResponseDescriptors.append(RKResponseDescriptor(mapping: BBUser.mapping(), method: RKRequestMethod.GET, pathPattern: "v1.2/user/:userId", keyPath: nil, statusCodes: successCodes));
效果很好,映射到 BBWake 工作中。
在 ObjectiveC 中不会发生此错误。
为什么?
映射:
BBWakeUP
class func mapping() -> RKObjectMapping {
var mapping : RKObjectMapping = RKObjectMapping(forClass: BBWakeUP.self);
mapping.addAttributeMappingsFromDictionary(["localization_hash" : "localizationHash"]);
return mapping;
}
BB用户
class func userMapping() -> RKEntityMapping {
var mapping = RKEntityMapping(forEntityForName: "BBUser", inManagedObjectStore: RKManagedObjectStore.defaultStore());
mapping.identificationAttributes = ["userId"];
mapping.addAttributeMappingsFromDictionary(["id" : "userId"]);
return mapping;
}
【问题讨论】:
标签: ios objective-c swift mapping restkit