gpt4 book ai didi

objective-c - 使用 Mantle 将 NSString 转换为 JSON 数组中的 NSURL

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:42 26 4
gpt4 key购买 nike

假设给我的是以下 JSON 响应

{
"images": [
"http://domain.com/image1.jpg",
"http://domain.com/image2.jpg",
"http://domain.com/image3.jpg"
]
}

使用 Mantle,我想解析这些字符串并将它们转换为 NSURL,但将它们保存在 NSArray 中。

所以我的 Objective-C 模型对象看起来像

@interface MyModel : MTLModel <MTLJSONSerializing>
// Contains NSURLs, no NSStrings
@property (nonatomic, copy, readonly) NSArray *images;
@end

是否有一种优雅的方式来实现这一点?一些 NSURL 数组转换器?

+ (NSValueTransformer*)imagesJSONTransformer
{
return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[NSURL class]];
}

显然 NSURL 不是从 MTLModel 派生的,所以那是行不通的。

最佳答案

不幸的是,Mantle 1.x 没有简单的方法将现有的转换器(在本例中,转换器名为 MTLURLValueTransformerName)应用于数组的每个元素。

你可以这样做:

+ (NSValueTransformer*)imagesJSONTransformer {
NSValueTransformer *transformer = [NSValueTransformer valueTransformerForName:MTLURLValueTransformerName];
return [MTLValueTransformer transformerWithBlock: ^NSArray *(NSArray *values) {
NSMutableArray *transformedValues = [NSMutableArray arrayWithCapacity:values.count];
for (NSString *value in values) {
id transformedValue = [transformer transformedValue:value];
if (transformedValue) {
[transformedValues addObject:transformedValue];
}
}
return transformedValues;
}];
}

在 Mantle 2.0 中,您将能够使用 predefined array mapping transformer . Mantle 2.0 仍在开发中。

关于objective-c - 使用 Mantle 将 NSString 转换为 JSON 数组中的 NSURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23268124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com