Bolts框架是否需要使用解析webservice?

我已经发布了问题如何使用Bolts Framework [Facebook + Parse]但是现在我有疑问,如果我想使用Bolts-framework,我必须使用解析webservice吗?

它们提供如下所示的示例代码,它们与Parse webservice相关( saveAsync: 。 但我在这行中看到"Using these libraries does not require using any Parse services. Nor do they require having a Parse or Facebook developer account"在Boltss’github "Using these libraries does not require using any Parse services. Nor do they require having a Parse or Facebook developer account"

 [[object saveAsync:obj] continueWithBlock:^id(BFTask *task) { if (task.isCancelled) { // the save was cancelled. } else if (task.error) { // the save failed. } else { // the object was saved successfully. SaveResult *saveResult = task.result; } return nil; }]; 

现在我感到困惑, Is bolts framework need to use parse webservice?

注意:不要问你想在哪里使用Bolts-framework。 看到我这个问题的第一行。

当然它不需要Parse webservice。 我在执行自己的任务时遇到了同样的困难,我正在研究这个框架。 看看BoltsTest代码 :你可以找到一些有用的代码。

我正在一个示例项目中尝试一些实验( https://github.com/giaesp/BoltsFrameworkSample )。 基本上你需要定义自己的方法返回一个BFTask。 这里有一个简单的摘录。

 - (BFTask*) parseHTML:(NSURL*)url searchString:(NSString*)searchString { BFTaskCompletionSource * tcs = [BFTaskCompletionSource taskCompletionSource]; NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30]; NSURLResponse * response; NSError * error; NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; if (!error) { NSString * receivedData = [NSString stringWithUTF8String:[returnData bytes]]; NSUInteger occurrences = [self countOccurencesOfString:@"iOS" inputString:receivedData]; [tcs setResult:[NSNumber numberWithInt:occurrences]]; } else { [tcs setError:error]; } return tcs.task; } 

然后,您可以使用您的方法作为文档解释并检查任务状态。

 [[self parseHTML:[NSURL URLWithString:@"http://www.stackoverflow.com"]] continueWithBlock:^id(BFTask *task) { if (task.isCancelled) { // the task was cancelled } else if (task.error) { // the task failed } else { // the task completes } return nil; }]; 

我知道已经有一段时间了,因为这个问题被问到了,但是mani想知道你是否可以使用Bolts框架和AFNetworking以及我想添加一个显示用法的快速示例。
它写得很快,而且非常简单明了。

 func taskWithPath(path: String) -> BFTask { let task = BFTaskCompletionSource() AFHTTPRequestOperationManager().GET(path, parameters: nil, success: { (operation, response) in task.setResult(response) }) { (operation, error) -> Void in task.setError(error) } return task.task } 

希望这可以帮助 :)

Bolts的想法是使用BFTask封装任何操作。 您不必将操作包装在方法中,但这是一种很好的方式来设想您应该如何构造代码:

 - (BFTask*) asynchronousImageProcessOperation; - (BFTask*) asynchronousNetworkOperation; 

……所有这些都遵循类似的模式:

 - (BFTask*) asynchronousNetworkOperation { BFTaskCompletionSource *source = [BFTaskCompletionSource taskCompletionSource]; // ... here's the code that does some asynchronous operation on another thread/queue [someAsyncTask completeWithBlock:^(id response, NSError *error) { error ? [source setError:error] : [source setResult:response]; } return task; } 

它的美妙之处在于你可以通过某种方式将这些任务串联在一起。 例如,如果您需要处理图像然后上传它,您可以执行以下操作:

 [[object methodReturnImageProcessingTask] continueWithBlock:^(BFTask *task) { [[anotherObject imageUploadTaskForImage:task.result] continueWithBlock:^(BFTask *task) { self.label.text = @"Processing and image complete"; }] }] 

当然,您也可以将两阶段任务封装在自己的任务中:

 - (BFTask*) processAndUploadImage:(UIImage* image); 

在这里输入内存。 它的排序和分组非常强大。 伟大的框架。