【发布时间】:2023-03-22 09:19:01
【问题描述】:
我正在尝试将收到的 JSON 映射到 Objective-C 中的模型对象。之前我在快速编码时总是使用 ObjectMapper。当我使用 ObjectMapper 时,我似乎无法掌握实现相同结果所需的步骤。问题是当使用 ObjectMapper 时,您编写的代码是在模型类内部发生映射的,例如;
例如:
public struct Item: Mappable{
public var name: String?
public var id: Int?
public var description: String?
public init?(map: Map) {
}
init(){
}
public mutating func mapping(map: Map) {
name <- map["name"]
id <- map["id"]
description <- map["description"]
}
}
我知道我必须编写某种底层辅助类来实现相同的功能,但我似乎无法管理,因为我根本不理解这个概念。我找不到,或者即使我找到了,我也不知道该怎么做。请帮忙。
我猜我的模型类在 Objective-c 中应该是这样的:
@interface BBKProductMetaData : NSObject
@property (nonatomic, strong,nonnull, readonly) NSString *name;
@property (nonatomic, strong,nonnull, readonly) NSInteger *id;
@property (nonatomic, assign,nonnull, readonly) NSString *description;
@end
我应该怎么做才能将我的 JSON 响应映射到这个模型。
【问题讨论】:
-
实际上在 swift 中有类似
ObjectMapper的库。在 CocoaPods 上搜索。示例:github.com/LoganWright/JSONMapping -
有一个很棒的库github.com/Mantle/Mantle
-
这将是一个框架,所以我有义务不使用库。我不希望我的框架依赖于外部库。
-
-(id)initWithJSONDict:(NSDictionary *)dict{ self = [super init]; if (self){_name = dict[@"name"]; _id = [dict[@"id"] integerValue];, _metaDescription = dict[@"description"];}return self;}是您要找的吗?或者你是想自己重做 ObjectMapper 库吗?另外,我会避免NSString *description;这可能会与 NSObject 的-description产生问题。
标签: ios objective-c json model mapping