我使用了这个article!理解魔法记录中的数组导入包装器。 我想使用dataKeyPath支持直接在我的模型中加载相关的图像URL。
{
"attachments": [
{
"id": 1,
"url": "http://www.website.net/uploads/2013/10/image.png",
"title": "imageTitle",
"mime_type": "image/png",
"images": {
"full": {
"url": "http://www.website.net/uploads/2013/10/image-540x401.png",
"width": 540,
"height": 401
},
"thumbnail": {
"url": "http://www.website.net/uploads/2013/10/image-150x150.png",
"width": 150,
"height": 150
}
}
}
]
}
在我的核心数据模型中,我使用了一个模型Attachement,其属性imageFull与“mappedKeyName”相关联,其值为“images.full.url”。
定义图像时,所有图像都已导入。问题在于我有这个:
{
"attachments": [
{
"id": 1,
"url": "http://www.website.net/uploads/2013/10/image.png",
"title": "imageTitle",
"mime_type": "image/png",
"images": {
}
}
]
}
在这种情况下,我有一个错误:
Unacceptable type of value for attribute: property = "imageFull"; desired type = NSString; given type = __NSArrayI;
在此方法中尝试映射值时:
- (void) MR_setAttributes:(NSDictionary *)attributes forKeysWithObject:(id)objectData
问题是,不是返回一个空字符串,而是返回空图像数据。
你认为这是我加载错误的方法吗?还有另一种方法吗?或者我必须手动完成吗?
感谢你的帮助:)
答案 0 :(得分:1)
MagicalRecord允许您使用自己的导入方法,并使用以下签名:
- (BOOL)import<attributeName>:(id)data
您可以在Attachment类中定义一个。您提到的文章中描述了这种方法。代码可能如下所示:
- (BOOL)importImageFull:(id)data {
if ([data isKindOfClass:[NSString class]]) {
self.imageFull = data;
return YES;
}
return NO;
}