首先,非常感谢 SO 社区。我学到了很多东西。但是,我仍然是 Objective C 的极端新手,因此有一个问题。如果这是一个无知的问题,请提前道歉。
我已经子类化以从我的 Web APINSURLConnection
中获取我的自定义对象 ( )。myObject
每个对象需要 2 次调用 API 才能完成。第一个调用是从我的对象列表中获取一个 id 属性。第二个调用是使用该 id 来构造不同的 URL 并填充其余myObject
属性。一切运行良好,但我对重新加载tableViewsection based on a completion of all of the
myObject objects within an
NSMutableArray 的方法的正确性有疑问。
这是我在成功实例化并获取所有不完整myObjects
并将它们添加到NSMutableArray
. messageString
是一个属性myObject
,仅在 . 的每个实例的第二次网络调用中可用/设置myObject
。因此,我想我会用它来检查完整性。arrayOfMyObjects
是可变的并且包含所有不完整的myObjects
. MyStoreClass
就是这样。处理子类创建的商店NSURLConnections
。
- (void)fetchDetails {
void (^completionBlock)(myObject *obj, NSError *err, int statusCode) = ^(myObject *obj, NSError *err, int statusCode) {
if (!err && statusCode == 200) {
NSArray *completionCheckArray = [arrayOfMyObjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"messageString = %@", [NSNull null]]];
if ([completionCheckArray count] == 0) {
[[self tableView] reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationAutomatic];
}
} else if (!err && statusCode != 200) {
[self statusCodeError:statusCode];
} else {
[self generalError:err];
}
};
for (myObject *mobj in arrayOfMyObjects) {
[[MyStoreClass sharedStore] fetchDetails:mobj withCompletion:completionBlock];
}
}
虽然这可行,但对我来说,必须通过完成块为每个myObjects
. 如果是这样,检查所有完成情况的替代方法是myObjects
什么?