我正在使用 Mantle 帮助我将模型对象转换为 JSON。我的一个对象包含一个centroid
定义如下的属性:
@property (assign) CLLocationCoordinate2D centroid;
当我处理服务器时,我收到以下格式的属性:
centroid: {
lat: "38.416600086777166",
lon: "-88.29868011101323"
}
所以我决定实现MTLJSONSerializing
协议中可用的自定义 JSON 转换器,定义如下:
+ (NSValueTransformer*)centroidJSONTransformer {
return [MTLValueTransformer transformerWithBlock:^CLLocationCoordinate2D(NSDictionary *dict) {
NSNumber *latitude = dict[@"lat"];
NSNumber *longitude = dict[@"lon"];
return CLLocationCoordinate2DMake([latitude doubleValue], [longitude doubleValue]);
}];
}
我遇到的麻烦是+ (instancetype)transformerWithBlock:(MTLValueTransformerBlock)transformationBlock
内部的方法MTLValueTransformer
接受了一个类型的块typedef id (^MTLValueTransformerBlock)(id);
,它返回一个类型的值id
或任何objective-c指针对象。
但是,我想做的是返回 CLLocationCoordinate2D 类型,它是一个标量,非id
类型。除了定义我自己的客户实现之外,transformerWithBlock:
是否有一种干净的方法可以实现这一点?