神奇记录 - 数据密钥路径

时间:2013-10-12 10:26:06

标签: ios magicalrecord

我使用了这个article!理解魔法记录中的数组导入包装器。 我想使用dataKeyPath支持直接在我的模型中加载相关的图像URL。

json条目的一个例子:

{
  "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

问题是,不是返回一个空字符串,而是返回空图像数据。

你认为这是我加载错误的方法吗?还有另一种方法吗?或者我必须手动完成吗?

感谢你的帮助:)

1 个答案:

答案 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;
}