【发布时间】:2014-02-14 15:51:23
【问题描述】:
我有 User 类,它是 NSManagedObject 子类:
@interface User : NSManagedObject
@property (nonatomic, retain) NSString * about;
@property (nonatomic, retain) NSString * contactAddress;
@property (nonatomic, retain) NSString * contactEmail;
@property (nonatomic, retain) NSString * hobbies;
@property (nonatomic, retain) NSArray* jobExperience;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * surname;
@end
如您所见,该对象具有对象JobExperience 的NSArray 属性。 JobExperience定义如下:
@interface JobExperience : NSObject <NSCoding>
@property (nonatomic,strong) NSString* position;
@property (nonatomic,strong) NSString* organization;
@property (nonatomic,strong) NSString* dateFrom;
@property (nonatomic,strong) NSString* dateTo;
@property (nonatomic,strong) NSString* website;
@property (nonatomic,strong) NSString* location;
@property (nonatomic,strong) NSString* jobDescription;
@end
在数据模型中,我有一个实体User,其中jobExperience 属性定义为transformable。这就是我在其中实现 NSCoding 方法的原因。
这是我对User 的映射:
_sharedUserProfileMapping = [RKObjectMapping mappingForClass:[User class]];
[_sharedUserProfileMapping addAttributeMappingsFromArray:@[
@"name", @"surname",
@"hobbies", @"interests",
@"contact_address", @"contact_email"
]];
RKObjectMapping* mappingForJobExperience = [RKObjectMapping mappingForClass:[JobExperience class]];
[mappingForJobExperience addAttributeMappingsFromArray:@[
@"location",
@"website", @"organization" ,
@"position" ,
@"date_from", @"date_to"
]];
[mappingForJobExperience addAttributeMappingsFromDictionary:@{@"description": @"jobDescription"}];
[_sharedUserProfileMapping addRelationshipMappingWithSourceKeyPath:@"job_experience" mapping:mappingForJobExperience];
如您所见,我添加了关系映射。当User 只是一个NSObject 子类时,都完美映射了!!!但是当我创建 NSManagedObject 子类时,我遇到了一个异常:
为NSManagedObject 映射一对多关系。即将通过 mutable[Set|Array]ValueForKey 应用值
restkit.object_mapping:RKMappingOperation.m:726 将 NSArray 关系对象从 keyPath 'job_experience' 映射到 'jobExperience'。价值: (
"",
“”
)
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“实体“用户”的 NSManagedObjects 不支持 -mutableArrayValueForKey:属性“jobExperience”
* 首先抛出调用栈:
只是为了完美地阐明其他属性映射。问题只在于这个JobExperience 对象数组。
【问题讨论】:
标签: ios objective-c cocoa-touch core-data restkit