我有一个单独的类,它从我的主视图控制器调用并开始下载 json 数据并将其异步解析为数组(实例变量)
一旦这个数据完全下载完成并将这个数组传回,有什么方法可以通知我的视图控制器?
我尝试在我的 viewdidload 方法中使用一些循环和睡眠计时器来等待下载数据,但这并没有帮助
我有一个单独的类,它从我的主视图控制器调用并开始下载 json 数据并将其异步解析为数组(实例变量)
一旦这个数据完全下载完成并将这个数组传回,有什么方法可以通知我的视图控制器?
我尝试在我的 viewdidload 方法中使用一些循环和睡眠计时器来等待下载数据,但这并没有帮助
为此,您应该使用委托。只需谷歌即可找到有关代表的详细信息。这是一个简单的教程。
基本思想是将主视图控制器的句柄传递给子类,子类将在处理完json后通知主视图控制器并使用委托将结果发送回主视图控制器。
希望这可以帮助。
我认为委托对此很有用,但更好的选择是块 api 用于更好地编写此代码。dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
// data downloading
dispatch_async(dispatch_get_main_queue(), ^{
// downloading data use
});
});
希望这对你有帮助。
使用通知中心模式。
下载数据后,通过通知模式通知 ViewController。
例如。
[[NSNotificationCenter defaultCenter] postNotificationName:@"SampleNotification" object:arrayObject];
将此代码添加到数据 json 解析类中并传递 Array 对象。
将以下代码添加到 ViewController 类中。获取 Array 对象。[[NSNotificationCenter defaultCenter] addObserver:self 选择器:@selector(smapleMethod:) name:@"SampleNotification" object:nil];
-(void)smapleMethod:(NSNotification *)notification{
NSString * message=notification.object;
NSLog(@"Message =%@",message);
}