2014-07-14 37 views
1

我在使用Swift中的JSONModel時遇到了一些麻煩。JSONModel不能與Swift數組一起使用

我正在嘗試創建一個ToDo列表應用程序,該應用程序可以保留項目集合,以便在應用程序關閉時保留待辦事項。這是我使用的代碼:

class ToDoItem: JSONModel { 
    var name: String = "" 
    var isCompleted: Bool = false 
    var createdOn: NSDate = NSDate() 
} 

class ToDoList: JSONModel { 
    var items: [ToDoItem] = [] 
} 

我可以通過調用toJSONString()轉換ToDoItem以JSON但相同的方法不起作用與ToDoList,則返回nil。任何想法爲什麼發生這種情況?

+0

與你的問題無關,但我認爲你需要在init中設置'createdOn'。你現在擁有的每個ToDoItem都會使用相同的值(至少我很確定 - 沒有運行這個代碼) – Jiaaro

+0

這些只是佔位符的值。我使用超類的初始化,並手動填充值。我對iOS生態系統很陌生,但這是在Java中執行持久性時通常要處理的事情。 – Sterbic

+0

我還沒有用Swift測試JSONModel。假設在Swift中事情相當不穩定,我想我會在實現Swift兼容性 –

回答

1

由於與Obj-C運行時支持的反射不兼容,JSONModel不支持Swift。 JSONModel目前需要此反射功能才能正確解析類型。 We are looking into alternative methods of defining the type mappings though.

具體來說,JSONModel依賴於使用協議來確定集合類型(如字典,數組等)中的項目類型。在Swift中定義的協議在運行時不可見 - 阻止JSONModel正確反序列化集合類型。

暫時,你有兩種選擇:從JSONModel

  1. 切換到另一個JSON(德)序列化庫與斯威夫特支持
  2. 在Objective-C
定義模型

我知道這並不理想,但我擔心目前的JSONModel行爲無法解決這個問題。

相關問題