2017-07-11 62 views
2

我有一些非常複雜的結構,它們由自定義的UIViews和其他快速對象組成。我想將它們的實例保存在Firebase上。問題是Firebase不會接受我的類型,所以我可以編寫代碼轉換爲更原始的類型並返回,但這會非常複雜和乏味。我想知道是否有一些方法可以保存整個班級,例如數據,二進制文件或字符串,然後將其上傳並解碼。或任何其他建議將複雜結構保存到firebase

+0

我從來沒有嘗試過,但是這看起來很有希望:https://stackoverflow.com/questions/29599005/how-to-convert-or-parse-swift-objects-to-json –

+0

我的答案有幫助嗎? –

回答

3

documentation

你可以通過設置一個字符串,數字,布爾值,null,數組或JSON對象

所以,你需要編寫自己的轉換器。

剛剛創建的對象structs/classes有3種方法:

// example with 2 fields: Int and String 

struct ItemFromFirebase { 
    let type: Int 
    let name: String 

    // manual init 
    init(type: Int, name: String) { 
     self.type = type 
     self.name = name 
    } 

    // init with snapshot 
    init(snapshot: DataSnapshot) { 
     let snapshotValue = snapshot.value as! [String: AnyObject] 
     type = snapshotValue["type"] as! Int 
     name = snapshotValue["name"] as! String 
    } 

    // function for saving data 
    func toAnyObject() -> Any { 
     return [ 
      "type": type, 
      "name": name 
     ] 
    } 
} 

它例如用簡單的類型。您只需要根據需要重寫功能toAnyObjectinit

希望它可以幫助

+0

嘿,這是有幫助的,但我想我試圖將數據保存到一個文件,並將該文件上傳到firebase。工作,但有一些[問題](https://stackoverflow.com/questions/45040306/saving-struct-as-data-to-file-and-back-again) –

+0

@AntersBear我不知道如果這是最佳做法,但這是您的選擇。它可以工作 –