我正在使用JSONModel从简单的 Web 服务检索数据。我需要将键 @"message"
的值获取到可变数组中。
- (void)viewDidLoad
{
[super viewDidLoad];
self.delegate = self;
self.dataSource = self;
NSString *conversationid = @"xx";
NSString *callURL = [NSString stringWithFormat:@"http://mydomain.com/inbox_messages.php?conversation=%@", conversationid];
_feed = [[MessageFeed alloc] initFromURLWithString:callURL
completion:^(JSONModel *model, JSONModelError *err)
{
self.messages = [[NSMutableArray alloc]initWithObjects:[_feed.messagesinconversation valueForKey:@"message"], nil];
NSLog(@"messages %@", self.messages);
}];
NSLog(@"test %@", self.messages);
}
我遇到的问题是 while: NSLog(@"messages %@", self.messages);
返回所有正确的数据, NSLog(@"test %@ ", self.messages);
返回 (null)
。
该变量在我的类的 .h 中声明为:@property (strong, nonatomic) NSMutableArray *messages;
这可能是一个菜鸟问题,但我是初学者,如果有人能给我指出正确的方向,我会很高兴。
最佳答案
您的 self.messages 的 NSLog 超出了完成 block 。加载数据后调用完成 block 。创建 MessageFeed 请求后立即调用该日志。因此,对象 self.messages 当然为 null,因为请求尚未完成。
解决方案是在完成 block 中处理所有解析,或者调用另一个类方法来解析接收到的数据。
关于ios - 陷入 JSONModel 和 NSMutableArray 困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18838379/