1

我用了这篇文章!了解神奇记录中的数组导入包装器。我想使用 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
        }
      }
    }
  ]
}

核心数据映射

在我的核心数据模型中,我使用带有属性 imageFull 的模型附件,该属性与值为“images.full.url”的“mappedKeyName”相关联。

导入时崩溃

定义图像后,所有内容都已导入。问题是当我有这个时:

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

问题是它不是返回空字符串或 nil,而是返回空图像数据。

你认为这是我的加载方式错误吗?还有其他方法吗?还是我必须手动完成?

谢谢你的帮助:)

4

1 回答 1

1

MagicalRecord 允许您使用具有以下签名的自己的导入方法:

- (BOOL)import<attributeName>:(id)data

您可以在 Attachment 类中定义一个。您提到的文章中描述了这种方法。代码可能如下所示:

- (BOOL)importImageFull:(id)data { 
    if ([data isKindOfClass:[NSString class]]) {
        self.imageFull = data;
        return YES;
    }
    return NO;
}
于 2013-10-21T07:28:24.223 回答