CKDiscoverAllContactsOperation不提取联系人

时间:2014-09-15 11:45:19

标签: objective-c ios8 cloudkit icloud-api

我正在使用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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

您应该在容器上使用discoverAllContactUserInfosWithCompletionHandler,如下所示:

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

此功能仅返回可以链接到iCloud帐户的联系人,此人也启动了您的应用。