iOS 的 JsonModel 有什么问题

What's wrong with JsonModel for iOS

这之前对我有用,但突然停止了。

我有一个对象 CouponJSONModel 很好地解析了,事实上这个对象不是空的,但是当我转换一些属性时,例如 coupon.title 我得到了这个错误。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary title]: unrecognized selector sent to instance 0x7f8510645ba0'

为什么会这样? 谢谢。

这是我的对象:

#import "JSONModel.h"

@protocol Coupon
@end

@interface Coupon : JSONModel;
@property (assign, nonatomic) NSString* title;
@property (strong, nonatomic) NSString* subtitle;
@property (strong, nonatomic) NSString* text;
@end

和 json:

{
"subtitle":"ENDOR",
"title":"This IS THE OBJECT 1",
"text":"And this is the text of the coupon!!!"
}

您没有保留标题中的字符串属性;您应该查阅 Apple 内存管理文档:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html

尝试使用 copy @属性 属性保持数据可用:

@interface Coupon : JSONModel;
@property (copy, nonatomic) NSString* title;
@property (copy, nonatomic) NSString* subtitle;
@property (copy, nonatomic) NSString* text;
@end

这里有更多信息Objective-C declared @property attributes (nonatomic, copy, strong, weak)

如果你不确定,如果你再收到 JSON 数据,你可以用这种代码调试它:

// In case JSON parsing was successful:
NSLog(@"%@", json);
// In case JSON parsing failed:
NSLog(@"%@", [[NSString all] initWithData:json encoding:NSUTF8StringEncoding]);

好吧,问题出在我安装的 Pod 中,特别是 this bug

发现这个问题,试图找出我自己的问题。

就我而言,问题是:

@property (assign, nonatomic) NSString* title;

对比

@property (strong, nonatomic) NSString* title;

Marin Todorov 是对的,但我花了一段时间才明白它失败的原因。库丢失了引用,后来,当试图获取值时,它无法解析数据。