如何在创建Realm对象之前验证值(在RealmSwift中)

时间:2016-06-16 06:53:45

标签: ios swift realm

我的应用程序代码从服务器获取JSON数据,将其转换为Dictionary,然后使用它来水合并尝试使用匹配的模式保存RealmSwift对象。

由于Float值进入模型中声明为Int的字段而导致崩溃。 RLMException被抛出。

正如this thread中所建议的那样,人们并不只是试图抓住RLMException

我的问题是,答案是否正确?并且,如果是这样,在发现意外值时防止崩溃的正确方法是什么?在尝试设置它们之前,我是否可以在所有值上运行某种验证机制?

3 个答案:

答案 0 :(得分:3)

您可以使用第三方框架将JSON映射到Realm对象,例如ObjectMapper,并使用它的可用初始化程序来验证您的JSON。

  

这个可用的初始化程序可以在对象序列化之前用于JSON验证。在函数内返回nil将阻止映射的发生。您可以检查存储在Map对象中的JSON以进行验证。

答案 1 :(得分:0)

您可以使用它来查看json参数是否一切正常

static func createFromJSONDictionary(json: JSONDictionary) throws -> MyObject {
        guard let
                property1 = json["property1"] as? Int,
                property2 = json["property1"] as? String else {
                   // Throw error.... or create with default values
                   throw NSError(domain: "", code: 0, userInfo: nil)
        }
       // Everything is fine, create object and return it
       let object = MyObject()
       object.something = property1
       return object
    }

答案 2 :(得分:0)

我最终写了一个扩展来处理这个问题。目前我只验证数字和日期,但switch语句可以轻松检查每种属性类型。

!someBoolean()