ios - 陷入 JSONModel 和 NSMutableArray 困境

标签 ios objective-c nsmutablearray jsonmodel

我正在使用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/

相关文章:

ios - @IBAction 执行Segue

objective-c - 带有菜单栏应用程序的 NSTimer

objective-c - 如何在 NSUserDefaults 中存储多个 NSMutableDictionary

objective-c - 如何关闭UIWebView水平弹跳

iphone - 将NSString添加到NSMutableArray替代了之前的NSString

iphone - 方法的返回值

ios - Xcode 痛苦,语法高亮损坏

ios - 创建 CGRect 作为关联对象?

ios - 如何全局跟踪 UITouches?

ios - 警告 - 其 View 不在 IOS 9 的窗口层次结构中