我正在开发一款游戏。它将使用GameCenter进行多人游戏。我希望能够使用CloudKit存储关卡,使用本地CloudKit容器存储游戏进度。问题是这需要不同的帐户。关于如何将它们链接在一起的任何想法? 最佳答案 我最近在构建同步到我的游戏Qiktionary时遇到了这个问题。起初,我将单人游戏数据与当前登录的GameCenter玩家相关联。因此,当我开始同步时,我通过为每个GameCenter玩家使用单独的CKRecordZone(在私有(private)数据库中)将CloudKit中的单人游戏数据与GameCenter玩家相关
所以,我正在开发两个应用程序,我想使用同一个iCloud容器。我已按照Xcode和苹果在线文档中所示的所有步骤进行操作。我在我的应用程序中添加了激活的iCloud功能,选中了CloudKit复选框,选择了一个我想使用的自定义容器(显然这两个应用程序是一样的)。应用程序更改了权利文件中的iCloud容器标识符,这应该表明一切正常。但是,每当我使用该应用程序并打印我的容器名称时,它都会显示每个应用程序的默认容器名称。对于这两个应用程序,功能屏幕如下所示:我创建了一个对象CloudKitController来管理所有云流量。我在应用程序启动时对其进行了初始化,并设置了如下变量:varcont
我正在从CloudKit服务器获取记录更改,但每次我都会出错[LogFacilityCK]GotaconnectionerrorforoperationE0367CA861DAF5A9:ErrorDomain=NSCocoaErrorDomainCode=4097"connectiontoservicenamedcom.apple.cloudd"UserInfo={NSDebugDescription=connectiontoservicenamedcom.apple.cloudd}我知道原因是我错误地初始化了CKFetchRecordZoneChangesOperation请检查以下
我正在使用NSPersistentCloudKitContainer通过CloudKit在不同设备之间同步数据。它适用于新项目,但是当我将它用于旧项目时,使用NSPersistentContainer添加的旧数据不会同步。我想实现的是在将NSPersistentContainer更改为NSPersistentCloudKitContainer后同步添加的旧数据。可能吗? 最佳答案 我找到了适用于我的CoreData数据库的解决方案-我的数据库非常复杂,具有多个多对多关系(名为Somnus的手术/麻醉日志应用程序)我首先为我所有的核心
我想确保我正确理解了ubiquityIdentityToken。在每台设备上为每个iCloud帐户获取的ubiquityIdentityToken在该设备上将是一致且唯一的,但跨设备可能不一致。这是真的吗?参见here对于ubiquityIdentityToken上的AppleDocs。 最佳答案 我在模拟器和设备之间做了一些非常基本的测试,我发现ubiquityIdentityToken每个设备/iCloud帐户都是唯一的。我使用不同的iCloud帐户登录iCloud,每次返回的token都与之前为相同的设备/iCloud帐户
在CloudKit中,我尝试通过批处理来保存大量的记录。但是,我的应用程序因以下错误而崩溃:Errorpushinglocaldata:这是我的代码:CKModifyRecordsOperation*modifyRecordsOperation=[[CKModifyRecordsOperationalloc]initWithRecordsToSave:localChangesrecordIDsToDelete:localDeletions];modifyRecordsOperation.savePolicy=CKRecordSaveAllKeys; modifyRecordsOpera
我希望那里有一位经验丰富的CloudKit大师,但根据我的谷歌搜索查询,我不确定你是否存在。我认为这可能是Apple的一个错误,但我不能确定:\我可以保存对我的CKDatabase的订阅,没问题。[publicDatabasesaveSubscription:subscriptioncompletionHandler:^(CKSubscription*subscription,NSError*error){if(error){//Nobigdeal,don'tdoanything.}else{[[NSUserDefaultsstandardUserDefaults]setObject:
CKFetchDatabaseChangesOperationfetchDatabaseChangesCompletionBlock的标题注释指出:“如果服务器返回一个CKErrorChangeTokenExpired错误,则previousServerChangeToken值太旧,客户端应该丢弃其本地缓存并从nilpreviousServerChangeToken开始重新获取此记录区域中的更改。”我想测试这个场景,因此我想生成一个过期的CKServerChangeToken,这样我就可以将它设置为CKFetchDatabaseChangesOperation上的previousSer
我想查询当前用户创建的所有记录。我可以成功获取当前用户的CKRecordID,但我似乎无法正确查询。下面是我正在使用的代码。我究竟做错了什么?[[CKContainerdefaultContainer]fetchUserRecordIDWithCompletionHandler:^(CKRecordID*recordID,NSError*error){NSPredicate*predicate=[NSPredicatepredicateWithFormat:@"creatorUserRecordID=%@",recordID];CKQuery*query=[[CKQueryalloc]
我注意到很多人使用Obj-C和导入.h等创建iCloud应用程序。对于像我这样的菜鸟来说,这似乎非常复杂,因为我从一开始就使用Swift。人们说仅使用Swift和CloudKit就可以创建iCloud应用程序。可能吗?谢谢 最佳答案 实际上,CloudKit是iCloud之上的一层。使用CloudKit,您可以处理结构数据。对于iCloud,您可能指的是“iCloud文档存储”?在这两种情况下,您都可以使用Swift和ObjectiveC执行此操作。iCloud文档存储时间更长,这可能是大多数示例都在ObjectiveC中的原因。使