CloudKit 获取所有用户记录

Posted

技术标签:

【中文标题】CloudKit 获取所有用户记录【英文标题】:CloudKit Fetch all User records 【发布时间】:2015-11-12 19:38:43 【问题描述】:

我想为我的应用获取在同一个公共默认容器中工作的所有用户。 是否可以获取所有用户 ID?

当我尝试这样做时:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"]; // to search for all the records
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Users" predicate:predicate];
[_publicDB performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) 
    if (error) 
        // Error handling for failed fetch from public database
        NSLog(@"Error:%@", error);
    
    else 
        // Display the fetched records
        NSLog(@"Users: %@", results);
    
];

我收到这样的错误:

Error:<CKError 0x7f9c6b7331f0: "Permission Failure" (10/2007); server message = "Can't query system types"; uuid = 9CBA8EB0-D9DC-46B2-BDF4-10C036599642; container ID = "iCloud.com.xxx.xxx.MyApp">

你知道我怎样才能做到这一点吗?我想从客户端的角度 (ios) 了解使用我的应用的其他用户是什么。

【问题讨论】:

【参考方案1】:

用户记录类型是您无法查询的特殊记录类型。如果要执行此类查询,则应创建自己的 recordType 并为每个用户插入一条记录。

【讨论】:

感谢您的确认。我也在考虑一个新的记录类型,它将存储索引用户 ID。感谢您的快速回复。老实说,用户记录类型应该是可查询的,以避免像我这样的数据重复;) 过去该表还包含名字和姓氏。我想出于隐私原因,查询用户是有限的。 CloudKit 应用程序投入生产后,您能否在 CloudKit 仪表板中看到每个使用您的应用程序的 User 的 iCloud 用户 ID?

以上是关于CloudKit 获取所有用户记录的主要内容,如果未能解决你的问题,请参考以下文章

从当前 iCloud 用户获取 CloudKit 记录

在 CloudKit 中获取私有用户记录

使用 CloudKit 获取用户记录 ID 失败

CloudKit 光标错误和无法返回所有行 - 获取记录时遇到错误

Swift - 从 Cloudkit 公共数据库中获取所有记录

Cloudkit 的 NSPredicate 匹配字符串