【问题标题】:Asynchronous download an object property异步下载对象属性
【发布时间】:2012-05-04 04:35:17
【问题描述】:

我正在 iOS 平台上编写提要阅读器,在解析 json 结果时,我创建了一个数组,其中包含代表每个提要的对象。这些对象将被连续推送到 NSTableView 或地图(它们具有地理定位信息)。有时会发生feed没有返回位置信息,而是返回地点的foursquare Id,所以我不得不联系foursquare服务器获取信息。 最好的方法是这样做吗? (我很想知道数组中的所有提要何时检索到他们的信息,所以我可以将所有内容推送到地图和表格视图中)

谢谢

【问题讨论】:

    标签: iphone objective-c ios asynchronous


    【解决方案1】:

    您可以创建一个 NSOperationQueue 并添加操作以从服务器获取信息,然后观察队列的“操作”键路径。当 operations.count == 0 时,推送到 map 和 tableview。

    编辑

    您本身并没有进行轮询 - 您正在观察属性并接收任何更改的通知。

    将自己添加为队列操作属性的观察者。

    [self.runningQueue addObserver:self forKeyPath:@"operations" options:0 context:NULL];
    

    然后执行以下操作:

    - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
                         change:(NSDictionary *)change context:(void *)context
    {
        if (object == self.runningQueue && [keyPath isEqualToString:@"operations"]) {
            if ([self.runningQueue.operations count] == 0) {
                // push to table view and map view
            }
        }
        else {
            [super observeValueForKeyPath:keyPath ofObject:object 
                               change:change context:context];
        }
    }
    

    this thread

    【讨论】:

    • 如何轮询队列的状态?
    猜你喜欢
    • 2016-09-05
    • 2021-06-09
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多