标签: cloudkit

CloudKit:按创建日期排序查询结果

从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)

ios icloud swift cloudkit

10
推荐指数
2
解决办法
4953
查看次数

Cloudkit:"错误保存记录WRITE操作不允许"

我正在尝试保存记录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)

cocoa cloudkit ckrecord

10
推荐指数
2
解决办法
2440
查看次数

CloudKit中CKReferenced记录的数量是否有限制?

我试图在CloudKit中存储联系人组,如果我尝试创建一大组记录,CKReferenced到单个组记录,我会收到错误.

该限制似乎约为700左右的记录.

有没有其他人看到类似的结果,或者可以确认限制的存在(或不存在)?我无法在文档中找到任何内容,也无法通过Google找到任何内容.

注意:我已经将我提交的记录拆分为400或更少的批次,因为这似乎是一个硬限制.

ios icloud cloudkit ckreference

10
推荐指数
1
解决办法
664
查看次数

使用不带iCloud帐户的CloudKit时"无法发送有效签名"错误

我已经提交了一个使用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 icloud cloudkit

10
推荐指数
1
解决办法
1146
查看次数

CloudKit不适用于Simulator

最近我一直无法让iOS模拟器处理我在CloudKit仪表板中创建的记录.有趣的是,它适用于真实设备,但不适用于模拟器.CloudKit Dashboard表示它是一个开发环境.当我使用模拟器运行我的应用程序时,我得到以下两个错误之一:

错误域= NSCocoaErrorDomain代码= 4097"操作无法完成.(Cocoa错误4097.)"(连接到名为com.apple.cloudd的服务)UserInfo = 0x7a276d40 {NSDebugDescription =连接到名为com.apple.cloudd的服务}

或者我明白了

错误:CKError 0x7b658890:"请求率限制"(7/2008); "这项行动受到了限制"; 3.0秒后重试

知道导致这个问题的原因是什么吗?

谢谢!

objective-c ios ios-simulator ios8 cloudkit

9
推荐指数
1
解决办法
2995
查看次数

iOS模拟器中不支持iCloud帐户?

我正在尝试测试我的iOS应用程序,它使用CloudKit API和模拟器.当我尝试使用我的iCloud凭据登录时,它说,

设备不受支持

您的Apple ID有效,但此iPhone不符合iCloud的条件.

在此输入图像描述

根据Apple的文档,我应该可以登录,就好像它是普通手机一样.我认为我必须做些傻事,但我想不出我会做错什么.

ios icloud xcode6 cloudkit

9
推荐指数
1
解决办法
3447
查看次数

多平台MBa类似于CloudKit?

我也需要在Android中实现基于CloudKit的应用程序.

哪些MBaas具有与CloudKit最相似的架构?我需要这些功能:

  • 级联删除
  • 能够从用令牌表示的日期跟踪表中的插入/更新/删除更改
  • 资产管理
  • 基于光标的记录提取/分页,跳过
  • 可扩展(不需要像操作那样的连接/应该是可能的)
  • 能够得到关于变化的推送通知
  • 初创公司的合理定价
  • 基于云
  • 没有服务器端逻辑
  • 不提供客户端存储,我有它
  • 简单的仪表板/没有性能图表等.

android parse-platform azure-mobile-services cloudkit

9
推荐指数
1
解决办法
417
查看次数

CloudKit推送通知didReceiveRemoteNotification从未调用过

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

macos objective-c apple-push-notifications ios cloudkit

9
推荐指数
2
解决办法
2629
查看次数

重置CloudKit可发现性权限

我正在测试通过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权限,无需进行大量不相关的设置.如果用户拒绝许可但后来改变主意怎么办?

更新:一些额外的信息:

  • 在模拟器上,设置 - >常规 - >休息 - >重置位置和隐私无效.
  • 同样在模拟器上,"重置内容和设置..."无效.
  • 尝试在不同的Mac上使用不同的设备,可以产生完全相同的结果.

以上引导我怀疑它是服务器端设置.所以我尝试使用我正在使用的帐户登录iCloud.com,然后转到设置 - >数据和安全 - >通过电子邮件查找我.在iOS设备和模拟器上,没有任何选择可以做任何事情:

在iCloud.com上通过电子邮件查找我

那么,有没有什么方法可以重置这个,或者它是固定在石头上并且不可改变,直到太阳膨胀并摧毁地球?

ios icloud swift cloudkit

9
推荐指数
2
解决办法
1243
查看次数

您可以在不同的应用程序之间共享CloudKit上的数据吗?

我在应用商店中有我的应用的免费和付费版本.我正在更新应用程序以使用CloudKit共享一些公共数据.我希望免费和付费应用分享相同的数据.

首先,两个应用程序可以与CloudKit共享相同的数据吗?

如果是这样,我怎么能让它工作?我尝试在两个目标的功能中启用CloudKit,并在两个应用程序中选择相同的容器.选择"使用默认容器"的主应用程序工作正常,但我选择"指定自定义容器"并从第一个目标中选择自定义容器的另一个应用程序在我尝试下载任何内容时收到错误.

ios cloudkit

9
推荐指数
1
解决办法
1757
查看次数