JSONModel:无法将获取的 JSON 分配给模型
Posted
技术标签:
【中文标题】JSONModel:无法将获取的 JSON 分配给模型【英文标题】:JSONModel: can't assign fetched JSON to model 【发布时间】:2013-12-10 21:45:57 【问题描述】:我获取的 JSON:
"username":"example","confirmed_rewards":"5","round_estimate":"0.73605946","total_hashrate":"0","payout_history":"10","round_shares":"85",
"workers":
"worker.1":"alive":"0","hashrate":"0",
"worker.2":"alive":"0","hashrate":"0"
我的模特:
#import "JSONModel.h"
@protocol LKCoinFCPoolModel @end
@interface LKCoinFCPoolModel : JSONModel
@property (strong, nonatomic) NSString* username;
@property (strong, nonatomic) NSString* confirmed_rewards;
@property (strong, nonatomic) NSString* round_estimate;
@property (strong, nonatomic) NSString* total_hashrate;
@property (strong, nonatomic) NSString* payout_history;
@property (strong, nonatomic) NSString* round_shares;
@property (strong, nonatomic) NSString<Optional> * ErrorCode;
@end
我创建了以下函数,用于获取 JSON 结构并将其分配给模型。
-(void)viewDidAppear:(BOOL)animated
//show loader view
[HUD showUIBlockingIndicatorWithText:@"Fetching JSON"];
//fetch the feed
LKCoinFCPoolModel* test;
test = [[LKCoinFCPoolModel alloc] initFromURLWithString:@"http://example.com/ap/key"
completion:^(LKCoinFCPoolModel *model, JSONModelError *err)
//hide the loader view
[HUD hideUIBlockingIndicator];
//json fetched
NSLog(@"user: %@", test.username);
];
我遇到的问题是,它打印的不是user: example
,而是user: (null)
。
我不确定我做错了什么,这是我尝试用 xcode 编写的第一个应用程序(我来自 Python/Java 背景)。
【问题讨论】:
你是打印用户还是用户名? user: 只是一个字符串(用于格式化),用户名是我想要打印的变量 也许我遗漏了什么,但你不想要NSLog(@"user: %@", model.username);
甚至NSLog(@"user: %@", [model username]);
@portforwardpodcast - 看起来是这样。 test
尚未分配。
DOH,当然 >,
【参考方案1】:
您的回调在 LKCoinFCPoolModel *model 中将解析的 JSON 传递给您。实际上,我认为您不能按照自己的方式分配测试。如果你真的想把它放到测试模型中,你应该在块内分配它。请记住,在下载和解析 JSON 之后,此块会异步运行。所以到那时测试才有效。
【讨论】:
以上是关于JSONModel:无法将获取的 JSON 分配给模型的主要内容,如果未能解决你的问题,请参考以下文章
JsonModel 无法将 json 中的数组转换为 jsonmodel 继承类