gpt4 book ai didi

ios - 使用 Swift 在 CloudKit 中获取记录 Assets

转载 作者:搜寻专家 更新时间:2023-11-01 06:47:46 25 4
gpt4 key购买 nike

我是 CloudKit 的新手,我无法将数据库中的 Assets 连接到应用程序中的 ImageView 和 TextView。在我的 CloudKit 数据库中,在记录类型下,我创建了一个名为“Companies”的记录。然后我转到公共(public)数据->默认区域,然后创建一个名为“myCompany”的记录的新实例。在“myCompany”中,我有两个 Assets ,一个图像和一个 .txt 文件。我想将这些 Assets 连接到我的应用程序。我不确定我是否需要使用 CKQuery 或者什么是最好的方法。任何建议将不胜感激。以下是我到目前为止所拥有的。请随时反馈我所拥有的,或者如果有更好的方法,我很想知道。谢谢。

import UIKit
import CloudKit

class LearnViewController: UIViewController {

@IBOutlet weak var theImage: UIImageView!
@IBOutlet weak var theText: UITextView!


let myRecord = CKRecord(recordType: "Companies" )

var image: UIImage!

let database = CKContainer.defaultContainer().publicCloudDatabase


func loadCoverPhoto(completion:(photo: UIImage!) -> ()) {
dispatch_async(
dispatch_get_global_queue(
DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)){
var image: UIImage!
let coverPhoto = self.myRecord.objectForKey("Picture") as CKAsset!
if let asset = coverPhoto {

if let url = asset.fileURL {
let imageData = NSData(contentsOfFile: url.path!)!

image = UIImage(data: imageData)
}
}

completion(photo: image)
}
}


override func viewDidLoad() {
super.viewDidLoad()

loadCoverPhoto() { photo in
dispatch_async(dispatch_get_main_queue()) {
self.theImage.image = photo
}
}

最佳答案

如果您知道 recordId,则可以通过执行以下提取操作直接获取记录:

database.fetchRecordWithID(CKRecordID(recordName: recordId), completionHandler: {record, error in

或者,如果您不知道 ID,您应该使用类似下面的代码查询记录。只需创建正确的 NSPredicate。一个查询可以返回超过 1 条记录。

var query = CKQuery(recordType: recordType, predicate: NSPredicate(value: true))
var operation = CKQueryOperation(query: query)
operation.recordFetchedBlock = { record in
// is this your record...
}
operation.queryCompletionBlock = { cursor, error in
self.handleCallback(error, errorHandler: {errorHandler(error: error)}, completionHandler: {
// ready fetching records
})
}
operation.resultsLimit = CKQueryOperationMaximumResults;
database.addOperation(operation)

在您使用 fetchRecordWithID 选项的情况下,代码将如下所示:

override func viewDidLoad() {
super.viewDidLoad()

database.fetchRecordWithID(CKRecordID(recordName: recordId), completionHandler: {record, error in
self.myRecord = record
loadCoverPhoto() { photo in
dispatch_async(dispatch_get_main_queue()) {
self.theImage.image = photo
}
}
}
}

关于ios - 使用 Swift 在 CloudKit 中获取记录 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com