簡體   English   中英

解析JSON並使用Realm保存

[英]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之間做出選擇。 不能混用。 您可以讓對象繼承自ObjectRLMObject 在我的回答中,我假設您想全面學習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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM