2016-03-22 20 views
1

CloudKitからデータを取得するCKAsset(画像ファイル)を持つクラスがあります。しかし、私はCKAssetを初期化する方法を理解できません。私は初期化時にデータを持っていません。クラスには文字列もありますが、初期化には ""を使用できます。 CKAssetを初期化するために使用できるものは何ですか?ここでCKAssetを初期化する方法は?

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? 
} 
} 
+0

保存するにはファイルにファイルURLが必要です。レコードを読み込んでアセットを取得することもできます。 – rmaddy

+0

私は知っていますが、initの時に空のクラスだけがあります。 – ALTVisual

+0

あなたは明確ではありません。関連するコードで質問を更新してください。 – rmaddy

答えて

0

午前...私のクラスでは、このコードに埋もれあなたの質問:)

FUNCのsaveLeCollection(theGlob:NSURL)への答えを見つけるでしょう{

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

最初に私はinit()のプロパティを設定しているのは、呼び出しを行い、レコードをクラスに渡すまでfileURLやその名前を知らないので、CKAssetのために動かないように設定すると言うでしょうKはCKAssetファイルを保存します。しかし、このフレームワークは、クラス内にCKAssetを持つ必要はありません。それはすべてを扱う。ダウンロードからキャッシュまで、必要なのはあなたの資産のrecordIDとプロパティーキーだけです。これらのメソッドはイメージビューで直接使用します。お役に立てれば。 https://github.com/agibson73/AGCKImage

関連する問題