从CloudKit加载项目时,我想按创建日期订购结果.我相信现在它正在按记录的第一个属性进行排序.
func loadItems() {
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Items", predicate: predicate)
db.performQuery(query, inZoneWithID: nil) { (results, error) -> Void in
if error != nil {
println(error.localizedDescription)
}
dispatch_async(dispatch_get_main_queue()) { () -> Void in
items = results as [CKRecord]
self.tableView.reloadData()
println("items: \(items)")
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试保存记录CloudKit但是我从cloudkit中收到以下错误:
error saving record este es error: Error saving record <CKRecordID: 0x7fef15b5d2a0; 2:(_defaultZone:__defaultOwner__)> to server: WRITE operation not permitted
Run Code Online (Sandbox Code Playgroud)
以下是我试图保存记录的方法:
[publicDatabase saveRecord:recordContent completionHandler:^(CKRecord *record, NSError *error){
if (!error)
{
NSLog(@"saved!!!");
}
else
{
if ([[error.userInfo valueForKey:@"ErrorDescription"] isEqualToString:@"record to insert already exists"])
{
NSLog(@"record already exist %@",[error.userInfo valueForKey:@"ErrorDescription"]);
}
NSLog(@"error saving record : %@",error.localizedDescription);
}
}];
Run Code Online (Sandbox Code Playgroud)
但之前我检查过cloudkit是否可用:
[myContainer accountStatusWithCompletionHandler:^(CKAccountStatus accountStatus, NSError *error)
{
NSLog(@" no error but status %ld",accountStatus);
if (((accountStatus == 3) || (accountStatus == 2)) && (!error))
{
NSLog(@" …Run Code Online (Sandbox Code Playgroud) 我试图在CloudKit中存储联系人组,如果我尝试创建一大组记录,CKReferenced到单个组记录,我会收到错误.
该限制似乎约为700左右的记录.
有没有其他人看到类似的结果,或者可以确认限制的存在(或不存在)?我无法在文档中找到任何内容,也无法通过Google找到任何内容.
注意:我已经将我提交的记录拆分为400或更少的批次,因为这似乎是一个硬限制.
我已经提交了一个使用CloudKit到Apple的iOS应用程序.它被拒绝是因为它要求用户登录iCloud进行访问.Apple的理由是即使没有iCloud登录,公共数据库仍然可读.所以应用程序的那部分应该起作用.
我正在尝试修改应用程序但是当我没有登录时我仍然会收到此错误.
<CKError 0x8141a360: "Internal Error" (1/4000); "Couldn't send a valid signature">
Run Code Online (Sandbox Code Playgroud)
我搜索过网络,解决方案总是只是登录iCloud.此错误也没有Apple文档.有没有人知道如何解决这个问题而无需登录iCloud帐户?非常感谢你.
最近我一直无法让iOS模拟器处理我在CloudKit仪表板中创建的记录.有趣的是,它适用于真实设备,但不适用于模拟器.CloudKit Dashboard表示它是一个开发环境.当我使用模拟器运行我的应用程序时,我得到以下两个错误之一:
错误域= NSCocoaErrorDomain代码= 4097"操作无法完成.(Cocoa错误4097.)"(连接到名为com.apple.cloudd的服务)UserInfo = 0x7a276d40 {NSDebugDescription =连接到名为com.apple.cloudd的服务}
或者我明白了
错误:CKError 0x7b658890:"请求率限制"(7/2008); "这项行动受到了限制"; 3.0秒后重试
知道导致这个问题的原因是什么吗?
谢谢!
我正在尝试测试我的iOS应用程序,它使用CloudKit API和模拟器.当我尝试使用我的iCloud凭据登录时,它说,
设备不受支持
您的Apple ID有效,但此iPhone不符合iCloud的条件.

根据Apple的文档,我应该可以登录,就好像它是普通手机一样.我认为我必须做些傻事,但我想不出我会做错什么.
我也需要在Android中实现基于CloudKit的应用程序.
哪些MBaas具有与CloudKit最相似的架构?我需要这些功能:
我正在使用CloudKit来存储用户数据,并希望在更改记录或创建新记录时获得推送通知.但它不起作用......
我注册了这样的订阅:
- (void) updateCloudSubscriptions {
NSPredicate *allPredicate = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"];
CKSubscription *newOrUpdateSubscription = [[CKSubscription alloc]
initWithRecordType:kMyRecordType predicate:allPredicate options:
(CKSubscriptionOptionsFiresOnRecordCreation | CKSubscriptionOptionsFiresOnRecordUpdate)];
CKNotificationInfo *newOrUpdateNotificationInfo = [CKNotificationInfo new];
newOrUpdateNotificationInfo.shouldBadge = NO;
newOrUpdateNotificationInfo.shouldSendContentAvailable = YES;
newOrUpdateSubscription.notificationInfo = newOrUpdateNotificationInfo;
CKDatabase *publicDatabase = [[CKContainer containerWithIdentifier:kMyContainerID]
publicCloudDatabase];
[publicDatabase saveSubscription:newOrUpdateSubscription
completionHandler:^(CKSubscription *theSubscription, NSError *saveError) {
if (saveError){
//error handling
}
NSLog(@"Subscription created");
}];
}
Run Code Online (Sandbox Code Playgroud)
这成功了.在CloudKit仪表板上,正确创建订阅.
在我的AppDelegate中,我现在有以下内容:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:
(UIUserNotificationTypeNone | UIUserNotificationTypeAlert …Run Code Online (Sandbox Code Playgroud) 我正在测试通过CloudKit请求可发现性的代码:
CKContainer.defaultContainer().requestApplicationPermission(CKApplicationPermissions.PermissionUserDiscoverability, completionHandler: { (status:CKApplicationPermissionStatus, error:NSError!) -> Void in
if status == CKApplicationPermissionStatus.Granted {
...
} else if status == CKApplicationPermissionStatus.Denied {
....
} else {
println("Request result: \(status)")
}
})
Run Code Online (Sandbox Code Playgroud)
但是如何重置结果呢?即使我删除并重新安装应用程序,我也会被问到一次,再也不会被问到.如果我再次运行此代码,我会立即进入完成块,结果与上次相同.
我在Apple的旧论坛上看到了另一个问题和帖子(需要登录),说可以通过设置 - > iCloud - > iCloud Drive - >通过电子邮件查找我来重置.但是,这样做并没有给我任何选择:
我确定我可以通过设置 - >常规 - >重置 - >重置所有设置(或者可能重置网络设置)来重置它[[但请参阅此处的其他信息],但必须有一些方法可以重置CloudKit权限,无需进行大量不相关的设置.如果用户拒绝许可但后来改变主意怎么办?
更新:一些额外的信息:
以上引导我怀疑它是服务器端设置.所以我尝试使用我正在使用的帐户登录iCloud.com,然后转到设置 - >数据和安全 - >通过电子邮件查找我.在iOS设备和模拟器上,没有任何选择可以做任何事情:
那么,有没有什么方法可以重置这个,或者它是固定在石头上并且不可改变,直到太阳膨胀并摧毁地球?
我在应用商店中有我的应用的免费和付费版本.我正在更新应用程序以使用CloudKit共享一些公共数据.我希望免费和付费应用分享相同的数据.
首先,两个应用程序可以与CloudKit共享相同的数据吗?
如果是这样,我怎么能让它工作?我尝试在两个目标的功能中启用CloudKit,并在两个应用程序中选择相同的容器.选择"使用默认容器"的主应用程序工作正常,但我选择"指定自定义容器"并从第一个目标中选择自定义容器的另一个应用程序在我尝试下载任何内容时收到错误.