swift Cloudkit - Jmeter 板-此数据库中没有“实体”记录

ldioqlga  于 2023-06-21  发布在  Swift
关注(0)|答案(2)|浏览(139)

我试图通过Xcode在Cloudkit中存储一些数据,但当我在 Jmeter 板中推送QueryRecords时,显示“此数据库中没有“实体”记录”,但我的“SaveFunction”报告“已成功保存”。我错过什么了吗我被卡住了...感谢您提供的任何帮助!...

1)签约与能力部分

  • 已检查键值存储
  • 已检查CloudKit
  • 容器iCloud.com.myusername.nameOfTheProject
    2)Xcdatamodeld
  • “实体”包含5个属性,第一个实体有一个默认值
    3)AppDelegate部件
  • 导入UIKit
  • 导入CoreData

[...]

lazy var persistentContainer: NSPersistentCloudKitContainer = {

    let container = NSPersistentCloudKitContainer(name: "NameOfContainer")
    container.loadPersistentStores(completionHandler: { (storeDescription, error) in
        if let error = error as NSError? {

            fatalError("Unresolved error \(error), \(error.userInfo)")
        }
    })

    return container
}()

// MARK: - Core Data Saving support

func saveContext () {
    let context = persistentContainer.viewContext
    if context.hasChanges {
        do {
            try context.save()
        } catch {
            let nserror = error as NSError
            fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
        }
    }
}

4)ViewController

  • 导入UIKit
  • 导入CloudKit

类ViewController:UIViewController {
let myContainer = CKContainer(标识符:“iCloud.com.MyUserName.NameOfTheProject”)

override func viewDidLoad() {
    super.viewDidLoad()

    let artworkRecord = CKRecord(recordType: "Entity")

    artworkRecord["customFieldName"] = "xxxx" as NSString

    // Do any additional setup after loading the view.
    let privateDatabase = myContainer.privateCloudDatabase

    privateDatabase.save(artworkRecord) { (record, error) in
        if let error = error {
                print(error)
            // Insert error handling
            return
        }
        print("Saved successfully")
        // Insert successfully saved record code
    }   
}

}

5)CloudKit Dashboard

  • 选择的容器是好容器
  • 数据库:Xcode中使用的与我相同ID的私有数据库
  • 区域:_DefaultZone
  • 显示自定义字段“customFieldName”(“可查询、可搜索、

sortable”)作为xcdatamodeld

  • 使用索引类型QUERYABLE创建的“recordName”字段
7uzetpgm

7uzetpgm1#

请检查您的开发帐户和测试设备上的iCloud帐户是否相同。我也有这个问题,当我在测试设备上测试iCloud访问,有一个不同的apple-id然后我的开发apple-id.
就像“选择或创建iCloud帐户以进行开发”一节中的Apple documentation说:“请注意,您的iCloud帐户与Apple Developer帐户不同;但是,您可以为两者使用同一电子邮件地址。这样做可以让您在CloudKit Dashboard中访问iCloud帐户的私人用户数据,这对调试很有帮助。
您正在使用私有数据库,如果您希望查看私有记录,则测试设备必须具有与开发帐户ID相同的apple-id。
亲切的问候,MacUserT

c9qzyr3d

c9qzyr3d2#

我也有同样的问题。原来CoreData不使用区域_defaultZone作为私有数据库。相反,它创建了一个名为com.apple.coredata.cloudkit.zone的程序。
将过滤器切换到正确的区域后,我可以查询使用自己的用户创建的所有记录。

我找不到任何关于这个的文档,但如果我发现更多关于它的信息,我会更新答案。

相关问题