一个简单的基础设施,用于检索所需数据并将其转换为内容对象。
假设您想获取并解析一个 JSON 资源,以在表格视图中显示其条目。您应该在专用类中隔离该检索,以免污染您的主控制器。
@interface DucksFetch : MUKContentFetch<NSArray<Duck *> *>
@end
@implementation DucksFetch
- (void)retrieveResourceWithCompletionHandler:(void (^)(MUKContentFetchStepResultType resultType, id retrievedObject, NSError *error))completionHandler
{
dispatch_async(myQueue, ^{
NSData *JSONData = ...;
completionHandler(MUKContentFetchStepResultTypeSuccess, JSONData, nil);
});
}
- (void)transformRetrievedObject:(id)retrievedObject withCompletionHandler:(void (^)(MUKContentFetchStepResultType resultType, id transformedObject, NSError *error))completionHandler
{
dispatch_async(myQueue, ^{
NSArray *ducks = ParseDucks(retrievedObject);
completionHandler(MUKContentFetchStepResultTypeSuccess, ducks, nil);
});
}
@end
现在获取数据既简单又干净。
DucksFetch *fetch = [[DucksFetch alloc] init];
[fetch startWithCompletionHandler:^(MUKContentFetchResponse *response) {
self.ducks = response.object;
[self updateUI];
}];
显然,这是一个小型且不完整的示例,它不关心取消和错误处理,这两者您使用 MUKContentFetch
时都是(几乎)免费的。
Marco Muccinelli,[email protected]
MUKContentFetch
可在 MIT 许可证下获得。有关更多信息,请参阅 LICENSE 文件。