使用Swift在CloudKit中获取logging资产

我是CloudKit的新手,我无法将数据库中的资源连接到我的应用程序中的ImageView和TextView。 在我的CloudKit数据库中,在loggingtypes下,我创build了一个名为“Companies”的logging。 然后我去了Public Data-> Default Zone,然后创build了一个名为“myCompany”的logging的新实例。 在“我的公司”我有两个资产,一个图像和一个.txt文件。 我想将这些资源连接到我的应用程序。 我不知道是否需要使用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 } } 

你可以直接得到logging,如果你知道recordId通过执行一个获取像:

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

或者,如果您不知道该ID,则应使用类似下面的代码来查询该logging。 只需创build正确的NSPredicate。 查询可以返回多个logging。

 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 } } } }