【发布时间】:2015-09-08 08:43:15
【问题描述】:
我会尽量描述这个问题...
场景
假设我有一个 NSManagedObject 'User'
@class Premise;
@interface User : NSManagedObject
@property (nonatomic, retain) NSNumber * identifier;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *premises;
@end
@interface User (CoreDataGeneratedAccessors)
- (void)addPremisesObject:(Premise *)value;
- (void)removePremisesObject:(Premise *)value;
- (void)addPremises:(NSSet *)values;
- (void)removePremises:(NSSet *)values;
@end
我还有一个 NSManagedObject '前提'
@class User;
@interface Premise : NSManagedObject
@property (nonatomic, retain) NSNumber * identifier;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) User *user;
@end
基于此,我正在创建一个关系路由,以将“前提”的 JSON 数组映射到“用户”对象上的“前提”属性。
路线如下:
let getPremisesRoute = RKRoute(relationshipName: "premises",
objectClass: User.self,
pathPattern: "user/:identifier/premises",
method: .GET)
这是 JSON 响应 (/user/1/premises):
[
{
"id": 35,
"name": "Icaraí"
},
{
"id": 32,
"name": "Remanso"
}
]
这是响应描述符:
let getPremisesResponseDescriptor = RKResponseDescriptor(mapping: premiseMapping, method: .GET, pathPattern: "user/:identifier/premises", keyPath: nil, statusCodes: RKStatusCodeIndexSetForClass(.Successful))
这里是'User'和'Premise'各自的映射
let userMapping = RKEntityMapping(forEntityForName: "User", inManagedObjectStore: moc)
userMapping.addAttributeMappingsFromDictionary(["id":"identifier", "name":"name"])
userMapping.identificationAttributes = ["identifier"]
userMapping.addPropertyMapping(RKRelationshipMapping(fromKeyPath: nil, toKeyPath: "premises", withMapping: premiseMapping))
let premiseMapping = RKEntityMapping(forEntityForName: "Premise", inManagedObjectStore: moc)
premiseMapping.addAttributeMappingsFromDictionary(["id":"identifier", "name":"name"])
premiseMapping.identificationAttributes = ["identifier"]
现在是我的问题
显然,Restkit 在映射过程中变得有点混乱。这是请求后的数据库:
用户表:
前提表:
请注意,实体之间并未创建关系。
现在,如果我将响应描述符的映射从 前提 更改为 user 映射,数据库将更改为:
用户表:
前提表:
我真的对发生的事情感到困惑,我尝试了很多解决方案都没有成功。
是 JSON 响应不正常还是我做错了什么? JSON 响应似乎是一种通用模式,具有 nil 键路径。
【问题讨论】:
标签: ios json swift restkit restkit-0.20