Tag: cloudkit

在开发过程中testingCloudKit中的NSUserDeletedZone

谢谢参观。 我希望有人可以帮助,我有点在我的智慧结束在这里。 我有一个生产中的应用程序,目前不处理CloudKit的CKErrorUserDeletedZone错误。 当用户从其iPhone / iPad的“设置” – >“iCloud”区域或其Mac上的“系统首选项” – >“iCloud”区域中删除容器数据时,会发生这种情况。 我遇到的问题是我无法从Xcode运行时testing这个场景,因为它使用了Development not Production服务器。 只有生产数据库显示在设置/系统偏好设置区域。 这意味着我不能在Xcode中进行debugging时重新创build场景。 在生产中testing的唯一方法是导出应用程序,可悲的是没有办法从Xcodedebugging完成。 有没有什么办法可以testing这个或我在这里完全失明? 我很乐意在生产中处理这个问题,但是对于大量的用户,我宁愿不要在当前只有less数用户遇到问题时把事情弄糟。 谢谢!

Cloudkit:CKDatabaseOperation不适用于手机

嗨,所有的CloudKit用户: 我有一个可怕的时间试图找出为什么CKDatabaseOperation不会给任何反馈。 没有错误,在蜂窝上保存CKRecords时没有callback。 你能不能让我知道你对此有何看法?

我可以将CloudKit数据传输到新的容器吗?

我正在制作一个CloudKit应用程序,而且我面临着将数据存储在默认容器中的select,只能由该应用程序或可以共享数据的自定义容器访问。 目前我只需要该应用程序来访问数据,所以我可能会把我的数据在默认的容器。 但是,如果最终我想从另一个应用程序访问这些数据,我可以将我的用户数据传输到一个自定义的可共享容器吗?

将资产列表(数组)保存到特定的CKRecord

我在CloudKit后端创build了一个CKRecordtypes,并且有一些与该类相关的属性。 我有string属性,字节,我有一个资产列表属性,所以存储一些图像(多个图像相关的单个logging)。 现在我试图存储一些图像,然后填充该属性,然后尝试将其保存到CloudKit,但它不工作。 代码如下所示: var images_array = [CKAsset]() // append the an image to the array images_array.append(CKAsset(fileURL: writeImage(image: selectedImage) as URL)) let record = CKRecord(recordType: recordName) record["class_title"] = someString as CKRecordValue record["class_body"] = someString as CKRecordValue record["images_array"] = images_array as CKRecordValue saveRecord(record) func saveRecord(_ xrecord: CKRecord) { let publicData = CKContainer.default().publicCloudDatabase let record: [CKRecord] = […]

如何与CloudKit的CKShare共享?

我正在研究今年苹果发布的新版CKShare ,我也有一些疑问。 我试图遵循WWDC的“CloudKit新增function”video,但部分代码在Xcode中不再适用。 我想要做的是:用户将input他的名字和电话,点击一个UIButton ,将与特定的人分享。 这里是代码: class ViewController: UIViewController, UICloudSharingControllerDelegate { @IBOutlet weak var nome: UITextField! @IBOutlet weak var telefone: UITextField! @IBOutlet weak var button: UIButton! override func viewDidLoad() { super.viewDidLoad() } @IBAction func send(_ sender: AnyObject) { print("Send button was clicked.\n") let elder = CKRecord(recordType: "Elder") elder["name"] = self.name.text as CKRecordValue? elder["telephone"] = self.telephone.text […]

cloudkit错误没有为资产收到authToken

为什么运行下面的代码时会出现这个错误? : “内部错误”(1/1000); “没有收到资产authToken” 我认为这与最后一行中的setObject代码有关。 let documentsDirectoryPath:NSString = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString var imageURL: URL! let imageData = UIImageJPEGRepresentation(self.newImage, 1.0) let path:String = documentsDirectoryPath.appendingPathComponent(self.newImage.description) try? UIImageJPEGRepresentation(self.newImage, 1.0)!.write(to: URL(fileURLWithPath: path), options: [.atomicWrite]) imageURL = URL(fileURLWithPath: path) try? imageData?.write(to: imageURL, options: [.atomicWrite]) let imageAsset:CKAsset? = CKAsset(fileURL: URL(fileURLWithPath: path)) curImages = record["Images"] as! [CKAsset] curImages.append(imageAsset!) print("saving image") […]

CloudKit:删除CKSubscription不起作用

您好,我尝试取消CloudKit上的订阅。 到目前为止,我尝试了CKModifySubscriptionsOperation和单一删除publicDB?.deleteSubscriptionWithID。 我的completionHandler给了我没有错误和一个已删除的订阅ID的数组。 所以一切似乎都没问题。 但是,当我改变一个logging,我仍然得到一个推送通知。 如何删除订阅? 这是更改的代码: func cancelCubscription(subscription:Subscriptions){ self._animationDelegate?.beginAnimation() var subs = [String]() subs.append(subscription.daySubSignature!) subs.append(subscription.hdpSubSignature!) subs.append(subscription.noteSubSignature!) subs.append(subscription.planerSubSignature!) subs.append(subscription.subjectSubSugnature!) subs.append(subscription.teacherSubSignature!) subs.append(subscription.tldSubSignature!) // Create a CKModifyRecordsOperation operation let subscriptionOperation = CKModifySubscriptionsOperation(subscriptionsToSave: nil, subscriptionIDsToDelete: subs) subscriptionOperation.modifySubscriptionsCompletionBlock = { (modifiedSubscriptions: [CKSubscription]?, deletedSubscriptionIDs: [String]?, error: NSError?) -> Void in guard error==nil else { dispatch_async(dispatch_get_main_queue(), { () -> Void in […]

CKFetchRecordsOperation + CKQueryOperations …我错过了什么?

在经过大量search示例代码之后,pipe理凑齐CKFetchRecordsOperation; 在这里,但是我一定错过了一些东西。 不要误解我的看法,但是… 要执行一个CKFetchRecordsOperation,你需要一个CKRecordID的NSArray; 为了得到一个CKRecordID的NSArray,你需要执行CKQuery,通过它你可以build立CKRecordID的NSArray。 但等一下,解压缩CKRecordIDs的过程使用一个CKQuery,通过它我可以简单地下载CKRecords呢? 如果没有CKQuery,你怎么得到CKRecordID的NSArray? -(void)doSingleBeaconsDownload { CKDatabase *publicDatabase = [[CKContainer containerWithIdentifier:@"iCloud.cqd.ch.BeaconBrowser"] publicCloudDatabase]; NSPredicate *predicatex = [NSPredicate predicateWithFormat:@"iBeaconConfig = %@",iBeaconsConfirmed.giReferenceID]; CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Running" predicate:predicatex]; [self.delegate performSelectorOnMainThread:@selector(processCompleted:) withObject:@"Downloading Configuration …" waitUntilDone:YES]; [publicDatabase performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) { if (error) { NSLog(@"Batch Download Error iCloud error %@",error); } else { […]

CloudKit – 如何共享多个logging并检索共享logging?

我观看了最新的WWDC 2016 CloudKit的新function ,了解如何使用CKShare与其他用户共享logging 单个logging共享: 我可以分享和检索单个logging 即如果xyz@gmail.com创build并共享单个logging到abc@gmail.com 多个logging共享: 假设有10条logging, xyz@gmail.com想分享给abc@gmail.com 。 当用户xyz@gmail.com与用户abc@gmail.com共享多个logging时,我正面临这个问题 我到目前为止所尝试的: 首先我创build了3条logging: 注1 注2(将父母设为注1) 注3(将父母设为注1) 我用下面的代码分享了Note1(父logging): 代码 – 共享logging 并用下面的代码检索共享注释: CODE – 从共享笔记中读取数据 以上方法仅给出父注释数据(仅限于根/父) 查询: 1)如何获取其他孩子的笔记logging? (我用术语小孩来理解目的) 2)是否需要每次检查是否有新的共享logging 因为我还没有find任何好的教程和官方苹果文档的来源。 你会build议我共享和检索多个logging的方法吗? 提前致谢..!

如何用CKModifyRecordsOperation.perRecordProgressBlock更新进度

这与MRProgress的最新线程更新进度有关 。 由于之前的线程,我将我的cloudkit查询从便捷API转换为CKOperations(谢谢Edwin!)。 所以在使用CKModifyRecordsOperation保存logging时,我可以通过loginperRecordProgressBlock来查看logging的进度,这非常棒。 但是,我试图把这个进度发回到viewcontroller,我不知道如何做到这一点。 我为我的所有CloudKit方法(CKManager)创build了一个类。 我遇到的另一个问题是,我不确定何时在VC中更新进度指示器(使用MRProgress框架)。 在CKManager的保存操作调用之前,期间或之后,我是否要调用它? 是否应该recursion调用,直到进度== 1.0? 这是我迄今的代码…除了更新/animation进度指示器(它出现并显示0%,然后在保存操作完成时消失)之外,每个工作都正常。 此外,我在我的CKManager类中使用属​​性(双重进展),我知道这是不正确的,但我不知道该怎么办。 我不觉得我已经在我的CKManager类声明/定义的callback方法是正确的。 任何指导表示赞赏! CKManager.h @property (nonatomic, readonly) double progress; – (void)recordProgressWithCompletionHandler:(void (^)(double progress))completionHandler; CKManager.m @property (nonatomic, readwrite) double progress; – (void)recordProgressWithCompletionHandler:(void (^)(double))completionHandler { completionHandler(self.progress); } – (void)saveRecord:(NSArray *)records withCompletionHandler:(void (^)(NSArray *, NSError *))completionHandler { NSLog(@"INFO: Entered saveRecord…"); CKModifyRecordsOperation *saveOperation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:records recordIDsToDelete:nil]; […]