标签: cloudkit

可以设置不基于应用程序名称的默认 CloudKit 容器吗?

当我CloudKit在 Xcode 中打开时,它会根据 app 的名称设置并创建一个默认容器。是否可以设置不同的默认名称?我不想在 CloudKit 仪表板的列表中看到新的容器名称,而是使用现有的。

在此处输入图片说明

ios cloudkit

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

如何进行包含令牌搜索的CloudKit全文搜索

我正在尝试创建CloudKit文本搜索查询.什么工作是查询以搜索文本开头的记录,如下所示:

NSPredicate(format: "Text BEGINSWITH %@", searchText)! 
Run Code Online (Sandbox Code Playgroud)

令牌搜索也有效(查询其中一个输入的单词是否在记录中的某个位置),如下所示:

NSPredicate(format: "allTokens TOKENMATCHES[cdl] %@", searchText)! 
Run Code Online (Sandbox Code Playgroud)

你可以在EVCloudKitDao的演示应用程序中看到这些查询(参见截图)

但现在我想结合这两个查询,以便结果感觉更完整.我尝试使用此查询:

NSPredicate(format: "Text BEGINSWITH %@ OR allTokens TOKENMATCHES[cdl] %@", searchText, searchText)! 
Run Code Online (Sandbox Code Playgroud)

但是我会得到这个CloudKit错误:

因未捕获的异常'CKException'而终止应用程序,原因:'意外表达:文本BEGINSWITH"Y"或allTokens TOKENMATCHES [cdl]"Y"'

除此之外,我还尝试了这样的NSCompoundPredicate:

    var p1 = NSPredicate(format: "allTokens TOKENMATCHES[cdl] %@", searchText)!
    var p2 = NSPredicate(format: "Text BEGINSWITH %@", searchText)!
    var p = NSCompoundPredicate(type: NSCompoundPredicateType.OrPredicateType, subpredicates: [p1, p2])
Run Code Online (Sandbox Code Playgroud)

但是那个给出了同样的错误:

由于未捕获的异常'CKException'而终止应用程序,原因:'意外的表达式:allTokens TOKENMATCHES [cdl]"y"或文本BEGINSWITH"y"'

奇怪的是,它在使用AndPredicateType而不是OrPredicateType时确实有效

有谁知道像这样的查询的替代解决方案?由于它是一个自动完成功能,执行2个查询并组合结果不是一个真正的选择.

search full-text-search nspredicate cloudkit

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

CloudKit:无法在生产模式中创建新的字段类型

我已将CloudKit开发环境部署到生产环境中.以前我在开发环境中测试了我的应用程序,它没有任何错误.现在在生产环境中运行应用程序,当客户端想要在CloudKit中插入记录时,我收到此错误:

Error saving record <CKRecordID: 0x17fddd60; 0188D8FE-F9EB-49A0-9CC2-A2AE513E9E25:(_defaultZone:__defaultOwner__)> to server: Cannot create a new field type in production schema
Run Code Online (Sandbox Code Playgroud)

你有什么主意吗?

ios cloudkit

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

单个CKRecord中是否存在CKAsset数组的问题?

我写的应用程序将让人们存储几张照片,并将它们与一个对象相关联.

我以为我会使用CloudKit来存储这些图像,就像CKAssets一样.

在CloudKit中,除了其他属性列表类型之外,我还可以创建一个CKAsset,并将文件附加到它(在我的例子中是一个JPEG).我还可以附加任何这些类型的NSArray,包括CKAsset.

我的用户可能会为每个对象发送5张图片,或者可能是30 ...谁知道.

只是想知道是否有人遇到过这样的情况,并且看到了这种方法的缺点.(例如,为每个图像创建单独的CKRecords,并添加对另一个CKRecord的引用).

ios cloudkit ckrecord ckasset

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

CloudKit CKReference列表

所以我hava记录包含一个CKReference List字段.

现在我想批量获取所有引用的(通过这个CKReferences列表)记录(来自另一种类型).

有任何想法吗?

ios cloudkit ckreference ckrecord

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

苹果的Cloudkit迁移

对于SO来说,这可能太简单了,但是对于同时使用Cloudkit / Core数据的用户,如果对数据库本身进行了任何更改,是否需要在Cloudkit中迁移类似于Core Data的数据?

例如,如果您完全调整了核心数据模型,则必须执行迁移过程,以确保该应用程序仍能正常运行。Cloudkit是一样的吗?

根据我的理解,没有必要进行迁移过程(判断是否进行更改并在模拟器中运行它们就很好了),但是我想在上传到App Store之前进行确认。谢谢你的帮助!

core-data ios cloudkit

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

发行更新CKRecord

我无法保存已保存的记录。recordToSave是从服务器下载的CKRecord。可以更新吗?

recordTosave.setValue("cat", forKey: "animal")

let publicData = CKContainer.defaultContainer().publicCloudDatabase

publicData.saveRecord(recordToSave, completionHandler:{(record: CKRecord?, error: NSError?) in
    if error == nil{  

    }else{
        print(error.debugDescription)
    }
})
Run Code Online (Sandbox Code Playgroud)

ios swift cloudkit ckrecord

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

在 Swift 中将 CLLocationCoordinate2D 转换为 CLLocation 时出错

我正在尝试将 cllocationcoordinate2d 转换为 cllocation。我在下面代码的第 12 行收到错误“容器文字中的预期表达式”。我还在第 13 行收到错误“无法将 cllocationcoordinate2d 类型的值转换为期望值 cllocation”,但这是因为第 12 行工作不正常。

@IBAction func makeEvent(sender: UIButton)
    {
        let center = CLLocationCoordinate2D(latitude: loc1.coordinate.latitude, longitude: loc1.coordinate.longitude)
        let lat: CLLocationDegrees = center.latitude
        let long: CLLocationDegrees = center.longitude
        self.pointAnnotation1 = MKPointAnnotation()
        self.pointAnnotation1.title = "Event"
        self.pointAnnotation1.coordinate = CLLocationCoordinate2D(latitude: lat, longitude: long)
        self.pinAnnotationView = MKPinAnnotationView(annotation: self.pointAnnotation1, reuseIdentifier: nil)
        self.mapView?.centerCoordinate = self.pointAnnotation1.coordinate
        self.mapView.addAnnotation(self.pinAnnotationView.annotation!)
        CLLocation *center = [[CLLocation alloc] initWithLatitude:latt longitude:longg]
        eventRecord.setObject(center, forKey: "event")
        let publicData = CKContainer.defaultContainer().publicCloudDatabase
        publicData.saveRecord(eventRecord) { record, error in
        }
        if error == …
Run Code Online (Sandbox Code Playgroud)

xcode cllocationmanager ios swift cloudkit

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

Swift 3使用CKAsset将图像发送到CloudKit

注意:这不是一个重复的问题,我已经看过其他解决方案,但没有一个在Swift 3中工作,但他们在Swift 2中工作.

我需要使用UIImagePickerController从照片库中获取图像,这样工作正常,然后我需要做的是以某种方式将其保存到CloudKit中的公共记录,我对如何完成这一操作非常开放.如果可能的话,请明确我需要更改/添加什么以及在哪里.

我提供了我的整个视图控制器文件以确保.

导入UIKit导入CloudKit

var email:String =""

class ViewController:UIViewController,UITextFieldDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate {

//MARK: Properties

@IBOutlet weak var firstNameField: UITextField!
@IBOutlet weak var lastNameField: UITextField!
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var passwordField: UITextField!
@IBOutlet weak var confirmPasswordField: UITextField!
@IBOutlet weak var notMatching: UILabel!
@IBOutlet weak var emailLabel: UILabel!
@IBOutlet weak var errorLabel: UILabel!

@IBOutlet weak var photoImageView: UIImageView!



override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.firstNameField.autocorrectionType = .no …
Run Code Online (Sandbox Code Playgroud)

ios swift cloudkit swift3 ios10

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

CloudKit - 如何共享多条记录并检索共享记录?

我在WWDC 2016上观看了CloudKit的新功能,了解如何使用CKShare与其他用户共享记录

单记录共享:

我能够共享和检索单个记录

即如果xyz@gmail.com创建并共享一条记录到abc@gmail.com

多条记录共享:

假设有10条记录,xyz @ gmail.com想要分享到 abc@gmail.com.我面临的问题,当用户xyz@gmail.com股份多个记录用户abc@gmail.com

到目前为止我尝试了什么:

首先,我创建了3个音符记录:

注1

注2(将父设为Note1)

注3(将父设为Note1)

我用下面的代码分享了Note1(父记录):

代码 - 共享记录

let controller = UICloudSharingController { controller,
        preparationCompletionHandler in

        let share = CKShare(rootRecord: self.parentRecord!)
        share[CKShareTitleKey] = "note" as CKRecordValue
        share.publicPermission = .readOnly

        let operation = CKModifyRecordsOperation(
              recordsToSave: [self.parentRecord!, share],
              recordIDsToDelete: nil)

        operation.perRecordCompletionBlock = { (record, error) in
            if let error = error {
                print("CloudKit error: \(error.localizedDescription)")
            } …
Run Code Online (Sandbox Code Playgroud)

ios icloud swift cloudkit

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