【问题标题】:import JSON in Realm在 Realm 中导入 JSON
【发布时间】:2016-07-06 08:49:36
【问题描述】:

我在 Azure 上有一个 SQL 数据库,我想将它与 Realm 同步,用于我的 iOS 应用程序(在 Swift 中) 为此,我创建了一个生成 JSON 的 REST API,现在我想将此 JSON 集成到 Realm 中。 为此,我尝试按照 Realm Documentation 上的说明进行操作,所以现在我有了:

领域表:

class tbl_test: Object {
    dynamic var id:Int = 0
    dynamic var name:String = ""

    override class func primaryKey() -> String? {
        return "id"
    }
}

Swift 代码:

let realm = try! Realm()
let stringTxt:String = "[{\"id\": 1, \"name\": \"My Name\"}]"
var myData = NSData()

if let dataFromString = stringTxt.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
    let jsonData = JSON(data: dataFromString)
    if let encryptedData:NSData = try! jsonData.rawData() {
                myData = encryptedData
    }       
}

try! realm.write {
   let json = try! NSJSONSerialization.JSONObjectWithData(myData, options: NSJSONReadingOptions())
            realm.create(tbl_test.self, value: json, update: true)
}

我使用 SwiftyJSON 将我的字符串转换为 JSON。

当我运行程序时,我收到以下错误消息:

[__NSCFDictionary longLongValue]: 无法识别的选择器发送到 实例 0x7fdcc8785820 2016-07-06 10:25:30.090 mydrawing[9436:2732447] *** 由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[__NSCFDictionary longLongValue]: 无法识别的选择器发送到实例 0x7fdcc8785820'

在 Realm 中导入 JSON 是一种好方法吗?根据我找到的没有官方方法,但是这种方法应该可以...

【问题讨论】:

    标签: json swift realm


    【解决方案1】:

    您面临的问题是您传递给Realm.create(_:value:update:) 的数据结构与方法所期望的不匹配。它需要一个字典,其中的键对应于模型类型上的托管属性,或者一个数组,每个托管属性都有一个元素。

    反序列化 JSON 数据后,json 如下所示:

    (
            {
            id = 1;
            name = "My Name";
        }
    )
    

    这是一个包含单个元素的数组,即字典。当你将此数组传递给Realm.create(_:value:update:) 时,Realm 期望数组的第一个元素是用作tbl_test 类型的id 属性的值。

    我怀疑你的意思是在数组的每个元素上依次调用Realm.create,而不是在数组本身上调用它。

    【讨论】:

    • 感谢您的回答。它几乎可以工作。实际上我已经用 realm.create(tbl_test.self, value: json[0], update: true) 替换了 realm.create(tbl_test.self, value: json, update: true) 现在,我不再有错误了。所以它似乎工作,但我的领域数据库仍然是空的。还有什么事情要做吗?
    • @Adz 你知道如何填充 Realm 数据库吗?
    • 但是我的 json 包含内部子数组那么我将如何做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多