0

我试图弄清楚如何反序列化包含不是完整对象的“字典”的对象。

例如,在我们的应用程序中,我们有一堆 JSON 对象,我们通过 Mantle 从 JSON 反序列化。一个简单的模型可能如下所示:

@interface Artist : MTLModel<MTLJSONSerializing>

@property (nonatomic, strong, nonnull)   NSString    *name;
@property (nonatomic, strong, nullable)   NSURL       *image;

@end

在一个集合类中,我们可能有这样的东西:

@interface SomeCollection : MTLModel<MTLJSONSerializing>

@property (nonatomic, strong, nonnull)   NSString    *title; 
@property (nonatomic, strong, nonnull)   NSArray<Artist *>    *listOfArtists;

@end

并且关联的.m将具有:

+ (NSValueTransformer *)listOfArtistsJSONTransformer {
    return [MTLJSONAdapter arrayTransformerWithModelClass:[Artist class]];
}

这里一切都很好。

例如,如果 JSON 看起来像:

{
    "title": "my collection with an array",
    "listOfArtists": [
            {
                "name": "Some Artist",
                "image": "http://www.google.com"
            },
            {
                "name": "Another Artist",
                "image": "http://www.artists.com"
            },
            {
                "name": "Jane Painter",
                "image": "http://www.jpainter.com"
            },
    ]
}

对象按照我们喜欢的方式反序列化(其中listOfArtists属性包含Artist *.

但是,如果我们有一个不同的集合,我试图找出咒语:

@interface SomeOtherCollection : MTLModel<MTLJSONSerializing>

@property (nonatomic, strong, nonnull)   NSString    *title; 
@property (nonatomic, strong, nonnull)   NSDictionary<NSString *, Artist *>    *dictionaryOfArtists;

@end

和一个可能看起来像的 JSON 文件

{
    "title": "my collection with a dictionary",
    "dictionaryOfArtists": {
            "139380bf-29ef-4cfc-95af-aa00f78f15f6": {
                "name": "Some Artist",
                "image": "http://www.google.com"
            },
            "4cdbc728-13e7-49c8-b45e-32ff0650ca67": {
                "name": "Another Artist",
                "image": "http://www.artists.com"
            },
            "2f2ec6f9-3af1-4789-b5de-399e14902ea8": {
                "name": "Jane Painter",
                "image": "http://www.jpainter.com"
            },
    }
}

listOfArtistsJSONTransformer方法会是什么样子?

谢谢。

4

1 回答 1

0

我对 Mantle 知之甚少(任何事情),但看起来你可以使用......

+ (NSValueTransformer *)assigneeJSONTransformer {
    return [MTLJSONAdapter dictionaryTransformerWithModelClass:[Artist class]];
}
于 2017-03-17T01:18:55.850 回答