我的应用程序代码从服务器获取JSON数据,将其转换为Dictionary,然后使用它来水合并尝试使用匹配的模式保存RealmSwift对象。
由于Float
值进入模型中声明为Int
的字段而导致崩溃。 RLMException
被抛出。
正如this thread中所建议的那样,人们并不只是试图抓住RLMException
。
我的问题是,答案是否正确?并且,如果是这样,在发现意外值时防止崩溃的正确方法是什么?在尝试设置它们之前,我是否可以在所有值上运行某种验证机制?
答案 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()