【发布时间】:2014-04-30 17:03:42
【问题描述】:
我正在尝试在我的请求中使用NSManagedObject 作为响应类,但我也有一些我需要饱和的关系,我不想对其进行管理,因为它们的变化要频繁得多。我尝试使用简单的NSObject 以及与NSManagedObject 的瞬态关系,但任何一种方法都以空关系结束(瞬态或NSObjects 不会饱和)。
这是我想要从请求中饱和并存储在 SQLite 中的对象:
@interface Car : NSManagedObject
@property (nonatomic, retain) NSString *brand
@property (nonatomic, retain) MLocation *location //don't want persisted
@end
这是我不希望保留但已饱和的对象:
//I have tried this with NSObject and NSManagedObject
@interface MLocation : NSObject
@property (nonatomic, assign) double latitude;
@property (nonatomic, assign) double longitude;
@end
这是响应描述符:
[manager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:self.buildCarMapping
method:RKRequestMethodGET
pathPattern:@"/v1/cars/near/:latitude/:longitude"
keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)] ];
这是对象映射:
- (RKObjectMapping *)buildCarMapping {
RKEntityMapping *carMapping = [RKEntityMapping mappingForEntityForName:@"Car" inManagedObjectStore:self.managedObjectStore];
[carMapping addAttributeMappingsFromDictionary:@{
@"brand" : @"brand"
}];
[carMapping addRelationshipMappingWithSourceKeyPath:@"location" mapping:self.buildLocationMapping];
return carMapping;
}
//I have tried this with NSObject and a transient NSManagedObject relationship
- (RKObjectMapping *)buildLocationMapping {
RKObjectMapping *locationMapping = [RKObjectMapping mappingForClass:[MLocation class]];
[locationMapping addAttributeMappingsFromDictionary:@{
@"longitude": @"longitude",
@"latitude": @"latitude"
}];
return locationMapping;
}
这是一个示例响应:
{
"brand": "Chevy",
"location": { //This is ignored by RestKit using my mappings
"latitude": 42.8,
"longitude": -98.6
}
}
【问题讨论】: