[英]Parse JSON and save with Realm
我有以下JSON數據:
{
"id": 120,
"userId": 1,
"key": [
56,
21,
133,
77
]
}
我使用JSONHelper進行解析,並使用Realm將其保存在本地。
問題是我無法在本地保存Int數組,並且如果我嘗試在Swift中將對象更改為簡單對象,則解析器將無法正常工作。
class Response: RLMObject, Deserializable {
dynamic var _id = 0
dynamic var userId = 0
var key = List<HashInt>()
required init(data: JSONDictionary) {
super.init()
_id <-- (data["id"])
userId <-- data["userId"]
key <-- data["key"]
}
override init() {
super.init()
}
}
class HashInt: Object, Deserializable {
dynamic var value = ""
required init(data: JSONDictionary) {
super.init()
value <-- data["value"]
}
required init() {
super.init()
}
}
我需要解析Int數組,並使用Realm將其保存在本地。 我該如何實現?
首先,您需要在Realm Swift和Realm Objective-C之間做出選擇。 不能混用。 您可以讓對象繼承自Object
或RLMObject
。 在我的回答中,我假設您想全面學習Swift。
您無法通過JSONHelper進行映射,因為它沒有構造Realm Swift的List
類型的概念。 但是您可以映射到Swift數組。
var keyObjects = [HashInt]()
keyObjects <-- data["key"]
for keyObject in keyObjects {
key.append(keyObject)
}
如果您有多個關系,則可以考慮重載JSONHelper的映射運算符( <--
),以便它支持映射到Realm Swift的List
類型。 如下所示。 (未經測試!)
import RealmSwift
public func <-- <T: Deserializable>(list: List<T>, dataObject: AnyObject?) {
var newArray = [T]()
newArray <-- dataObject
for object in newArray {
list.append(object)
}
return list
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.