【问题标题】:CKDiscoverAllContactsOperation not fetching contactsCKDiscoverAllContactsOperation 未获取联系人
【发布时间】:2014-11-08 22:30:42
【问题描述】:

我正在使用CKDiscoverAllContactsOperation,但它对我来说不能正常工作。

-(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];
}

我使用的容器是publicCloudDatabase

【问题讨论】:

  • “对我来说工作不正常”是什么意思?根本不工作?错误信息?
  • 您的代码是正确的,我认为问题是您没有登录 iCloud 帐户。

标签: objective-c ios8 cloudkit icloud-api


【解决方案1】:

你应该像这样在容器上使用discoverAllContactUserInfosWithCompletionHandler:

[self.container discoverAllContactUserInfosWithCompletionHandler:^(NSArray *userInfos, NSError *error) {
.. 
}

此函数将仅返回可以链接到 iCloud 帐户并且此人也已启动您的应用的联系人。

【讨论】:

  • 嗨 edwin,我已经尝试过了,但它仍然无法正常工作。那你还有其他选择吗?
  • 如果您的应用应该被允许这样做,也许您在提示中回答“否”?查看您的设置、隐私、联系人、您的应用
  • 它在我的代码中运行,您可以在 github.com/evermeer/EVCloudKitDao 找到它(对不起,它是用 Swift 编写的)
  • 嗨 edwin,我已经尝试过这段代码,但我可以看到那个,因为我没有找到左侧菜单按钮。你能建议我吗?出了什么问题。
  • 啊,我看到菜单按钮从第一种形式消失了。您仍然可以从左边缘向右滑动以显示菜单
【解决方案2】:

只有在不同的用户激活应用程序、批准为可发现并且在他们的联系人中有其他人的 iCloud 电子邮件地址时,搜索才有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 2013-12-27
    • 1970-01-01
    • 2019-03-14
    • 2017-06-22
    • 2016-10-22
    相关资源
    最近更新 更多