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 继承类

无法从 JSONModel 初始化模型。我得到零值

JSONModel

将 NSmangedObject 转换为 JsonModel

axios GET 请求有效,但无法将结果内容分配给变量

无法将文件中的多个值分配给 json 请求