NSArray 元素无法匹配 Swift 数组元素类型预期的 JSONPaymentCard 但找到 __NSDictionaryI
NSArray element failed to match the Swift Array Element type Expected JSONPaymentCard but found __NSDictionaryI
我正在使用 JSONModel 从服务器转换值:
@interface PaymentCardsResponse: JSONModel
@property (strong, nonatomic) NSArray<JSONPaymentCard *> *userCards;
@end
但后来我尝试访问这个
response.userCards.forEach { card in } //here is an error
我有一个错误:
Precondition failed: NSArray element failed to match the Swift Array Element type
Expected JSONPaymentCard but found __NSDictionaryI
为什么我把它放在那里?我错过了什么?
在JSONModel的README文件中,有一条注释说:
@interface OrderModel : JSONModel
@property (nonatomic) NSInteger orderId;
@property (nonatomic) float totalPrice;
@property (nonatomic) NSArray <ProductModel> *products;
@end
Note: the angle brackets after NSArray contain a protocol. This is not the same as the Objective-C generics system. They are not mutually exclusive, but for JSONModel to work, the protocol must be in place.
JSONModel 使用 <>
中的类型来确定要反序列化的数组的具体类型,并特别指出,您不能将其替换为 Objective-C 泛型系统(“不是相同”!),所以如果你这样做了:
@property (strong, nonatomic) NSArray<JSONPaymentCard *> *userCards;
你没有告诉 JSONModel 数组应该包含什么模型类型,所以它只是愚蠢地反序列化 NSDictionary
s。您可以同时执行 Objective-C 泛型, 和 告诉 JSONModel 数组的类型,如自述文件中的下一个代码片段所示。
@property (strong, nonatomic) NSArray<JSONPaymentCard *> <JSONPaymentCard> *userCards;
我正在使用 JSONModel 从服务器转换值:
@interface PaymentCardsResponse: JSONModel
@property (strong, nonatomic) NSArray<JSONPaymentCard *> *userCards;
@end
但后来我尝试访问这个
response.userCards.forEach { card in } //here is an error
我有一个错误:
Precondition failed: NSArray element failed to match the Swift Array Element type Expected JSONPaymentCard but found __NSDictionaryI
为什么我把它放在那里?我错过了什么?
在JSONModel的README文件中,有一条注释说:
@interface OrderModel : JSONModel @property (nonatomic) NSInteger orderId; @property (nonatomic) float totalPrice; @property (nonatomic) NSArray <ProductModel> *products; @end
Note: the angle brackets after NSArray contain a protocol. This is not the same as the Objective-C generics system. They are not mutually exclusive, but for JSONModel to work, the protocol must be in place.
JSONModel 使用 <>
中的类型来确定要反序列化的数组的具体类型,并特别指出,您不能将其替换为 Objective-C 泛型系统(“不是相同”!),所以如果你这样做了:
@property (strong, nonatomic) NSArray<JSONPaymentCard *> *userCards;
你没有告诉 JSONModel 数组应该包含什么模型类型,所以它只是愚蠢地反序列化 NSDictionary
s。您可以同时执行 Objective-C 泛型, 和 告诉 JSONModel 数组的类型,如自述文件中的下一个代码片段所示。
@property (strong, nonatomic) NSArray<JSONPaymentCard *> <JSONPaymentCard> *userCards;