ios - 任何适用于 IOS8 beta CloudKit 的 CKDiscoverAllContactsOperation 的工作示例代码吗?

标签 ios ios8 cloudkit

我一直在 ios 8 beta 中使用 icloud,CloudKitAtlasAnIntroductiontoCloudKit 示例项目非常有帮助。 https://developer.apple.com/library/prerelease/ios/samplecode/CloudAtlas/Introduction/Intro.html

但是我想使用CKDiscoverAllContactsOperation类,但我在任何地方都找不到它的任何示例代码,并且在线文档也不是很有帮助。 https://developer.apple.com/library/prerelease/ios/documentation/CloudKit/Reference/CKDiscoverAllContactsOperation_class/index.html

如果有人成功使用CKDiscoverAllContactsOperation,您能否帮我指出正确的方向或展示如何调用它的工作示例?

我尝试过此操作,看看是否可以从 iCloud 获得响应,但什么也没有:

- (void)queryForRecordsOtherUsersInAddressBookcompletionHandler:(void (^)(NSArray *records))completionHandler {

CKDiscoverAllContactsOperation *discoverAllContactsOperation= [[CKDiscoverAllContactsOperation alloc] init];
[discoverAllContactsOperation setContainer:_container];

NSMutableArray *results = [[NSMutableArray alloc] init];


discoverAllContactsOperation.discoverAllContactsCompletionBlock = ^(NSArray *userInfos, NSError *operationError) {
    [results addObjectsFromArray:userInfos];
};


discoverAllContactsOperation.discoverAllContactsCompletionBlock=^(NSArray *userInfos, NSError *operationError){
    if (operationError) {
        // In your app, handle this error with such perfection that your users will never realize an error occurred.
        NSLog(@"An error occured in %@: %@", NSStringFromSelector(_cmd), operationError);
        abort();
    } else {
        dispatch_async(dispatch_get_main_queue(), ^(void){
            completionHandler(results);
        });

    }
};


}

并用这个调用...

 [self.cloudManager queryForRecordsOtherUsersInAddressBookcompletionHandler:^(NSArray *records ) {
                if (records.count==0){
                    NSLog(@"Login name not found");
                    return;
                }
                //self.results= records;
                //_loggedInRecord = self.results[0];
                //NSLog(@"%@,%@",_loggedInRecord[@"lastName"],_loggedInRecord[@"firstName"]);
               // [self performSegueWithIdentifier:@"loggedInSegue" sender:self ];

            }];

我知道代码实际上不应该做任何事情。我再次强调,我只是在寻找来自 iCloud 的回复。

最佳答案

这是我正在使用的。 self.container 是在 init 中使用 [CKContainer defaultContainer] 设置的 CKContainer

  -(void)queryForAllUsers: (void (^)(NSArray *records))completionHandler {

    CKDiscoverAllContactsOperation *op = [[CKDiscoverAllContactsOperation alloc] init];

    [op setUsesBackgroundSession:YES];
    op.queuePriority = NSOperationQueuePriorityNormal;

    [op setDiscoverAllContactsCompletionBlock:^(NSArray *userInfos, NSError *error) {

        if (error) {
            NSLog(@"An error occured in %@: %@", NSStringFromSelector(_cmd), error);
            //abort();
        } else {

     //       NSLog(@"Number of records in userInfos is: %ld", (unsigned long)[userInfos count]);
            dispatch_async(dispatch_get_main_queue(), ^(void){
                completionHandler(userInfos);
            });
        }
    }];
    [self.container addOperation:op];
}

关于ios - 任何适用于 IOS8 beta CloudKit 的 CKDiscoverAllContactsOperation 的工作示例代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660018/

相关文章:

ios - 制作一个 UITableView "sticky to the bottom"

ios - UIView自动布局滑入屏幕或滑出屏幕动画

iOS:呈现其界面从 xib 文件加载并包含导航 Controller 的新 View

ios - becomeFirstResponder 在 iOS 8 中不起作用

swift - UIModalPresentationStyle.PageSheet 不显示 ViewController 内容

facebook - 在 Xcode 中使用 Swift 解析 Facebook SDK 设置

iOS 9 CloudKit : query does not return anything while connected to cellular network

ios - 如何解决此 Spritekit (Swift 3) 错误?

ios - 替换 CloudKit 记录时遇到问题

ios - 管理 CKQuerySubscriptions