EvernoteBolts 0.1.0

EvernoteBolts 0.1.0

测试测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

未声明的 维护。



 
依赖项
Evernote-SDK-iOS~> 1.3.1
Bolts~> 1.0.0
 

Bolts Tasks 扩展,用于 Evernote iOS SDK

允许您使用 BoltsFramework Tasks 与 Evernote APIs 进行 iOS 开发。

为什么?

而不是像这样嵌套的回调

[notestore getDefaultNotebookWithSuccess:^(EDAMNotebook *notebook) {
    EDAMNoteFilter* filter = [[EDAMNoteFilter alloc] init];
    filter.notebookGuid = notebook.guid;
    [notestore findNotesWithFilter:filter
                            offset:0
                          maxNotes:100
                           success:^(EDAMNoteList *list) {
                               [[list notes] enumerateObjectsUsingBlock:^(EDAMNote* note, NSUInteger idx, BOOL *stop) {
                                   [notestore getNoteApplicationDataEntryWithGuid:note.guid key:@"MyData" success:^(NSString *entry) {
                                       // save the result
                                   } failure:^(NSError *error) {
                                       // error handling
                                   }];
                               }];
                           } failure:^(NSError *error) {
                               // error handling
                           }];
} failure:^(NSError *error) {
    // error handling
}];

您可以编写类似的代码

[[[[notestore getDefaultNotebookAsync] continueWithSuccessBlock:^id(BFTask *task) {
    EDAMNotebook *notebook = task.result;
    EDAMNoteFilter* filter = [[EDAMNoteFilter alloc] init];
    filter.notebookGuid = notebook.guid;
    return [notestore findNotesAsyncWithFilter:filter offset:0 maxNotes:100];
}] continueWithSuccessBlock:^id(BFTask *task) {
    EDAMNoteList *list = task.result;
    NSMutableArray* tasks = [NSMutableArray array];
    [list.notes enumerateObjectsUsingBlock:^(EDAMNote* note, NSUInteger idx, BOOL *stop) {
        BFTask* subtask = [[notestore getNoteApplicationDataEntryAsyncWithGuid:note.guid key:@"MyData"] continueWithSuccessBlock:^id(BFTask *task) {
            // save the result
            return nil;
        }];
        [tasks addObject:subtask];
    }];
    return [BFTask taskForCompletionOfAllTasks:tasks];
}] continueWithBlock:^id(BFTask *task) {
    if (task.error) {
        // error handling
    } else if (task.exception) {
        // exception handling
    } else {
        // task complete
    }
    return nil;
}];

优势

  • 代码更易于阅读。
  • 易于编写序列任务。
  • 易于编写并行任务。
  • 无需子类化 NSOperation 即可实现可取消的任务和依赖项。

有关BoltsFramework的更多详细信息,请检查他们的仓库和博客文章

许可证

MIT 许可证。