首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何初始化CKAsset?

如何初始化CKAsset?
EN

Stack Overflow用户
提问于 2016-03-22 13:30:56
回答 2查看 404关注 0票数 1

我有一个类,它有一个从CloudKit拉取数据的CKAsset (图像文件)。但是,我不知道如何初始化CKAsset。我没有初始化时的数据。这个类也有字符串,但我可以使用"“来初始化它们。可以使用什么来初始化CKAsset?

这是我的班级。

代码语言:javascript
复制
class Locations: NSObject, MKAnnotation {
var title: String?
var subtitle: String?
var coordinate: CLLocationCoordinate2D
var story: String?
var image: CKAsset

override init()
{
    self.title = "Test Title"
    self.subtitle = "Test Subtitle"
    self.coordinate = CLLocationCoordinate2D.init()
    self.story = ""
    self.image = <- How do I init the CKAsset before I have the data?
}
}
EN

回答 2

Stack Overflow用户

发布于 2016-03-22 16:16:50

早上好,您将在下面的代码中找到问题的答案:)

函数saveLeCollection(全局:NSURL){

代码语言:javascript
复制
    let container = CKContainer(identifier: "iCloud.com")
    let publicDB = container.publicCloudDatabase

    let singleLink2LinkthemALL = CKRecordID(recordName: uniqReference)
    let newRecord = CKRecord(recordType: "Collection", recordID: singleLink2LinkthemALL)
    let whistleAsset = CKAsset(fileURL: theAssetURL)
    newRecord["theAsset"] = whistleAsset


    var localChanges:[CKRecord] = []
    localChanges.append(newRecord)

    let saveRecordsOperation = CKModifyRecordsOperation(recordsToSave: localChanges, recordIDsToDelete: nil)
    saveRecordsOperation.savePolicy = .ChangedKeys
    saveRecordsOperation.perRecordCompletionBlock =  { record, error in
        if error != nil {
            self.showAlert(message: error!.localizedDescription)
            print(error!.localizedDescription)
        }
        // deal with conflicts
        // set completionHandler of wrapper operation if it's the case
    }
    saveRecordsOperation.modifyRecordsCompletionBlock = { savedRecords, deletedRecordIDs, error in
        if error != nil {
            self.showAlert(message: error!.localizedDescription)
            print(error!.localizedDescription)
        } else {
            // deal with conflictsay
            // set completionHandler of wrapper operation if it's the case

        }
    }

    publicDB.addOperation(saveRecordsOperation)


}
票数 0
EN

Stack Overflow用户

发布于 2016-03-22 20:12:31

首先,我要说的是,像你这样在init()中设置属性对于CKAsset是行不通的,因为在你调用并将记录传递给你的类之前,你不会知道CK将保存CKAsset文件的fileURL或名称。然而,我构建了这个框架,你永远不需要在类中有一个CKAsset。它可以处理所有的事情。从下载到缓存,您所需要的就是资产的recordID和属性密钥。您可以直接在imageview上使用这些方法。希望这能有所帮助。https://github.com/agibson73/AGCKImage

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36146807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档