我在一个项目中长期使用RealmSwift和Codable,但是,我的api开发人员刚刚给了我两个新属性,它们只存在于对象的某些返回调用中。如果我调用getUserInfo,我会收到一个没有这两个属性的usermodel。在这种情况下,您可以在codable中使用decodeIfPresent并将数据类型设置为可选。然而,这两个字段是纪元时间值,使它们成为某种数字。Realm要求您的数据类型以@objc为前缀。@objcdynamicvarscanIn:Double=0当然,所有的数字基元都是这样工作的,但是它们中的NONE作为可选值工作。您必须使用NSNumber或类似的方式来使用O
我想转换定义为RealmOptional的类型到Int或Float,取决于分配给泛型的类型。但是,当我尝试使用switch分发它们时声明,结果不是RealmOptional()但是RealmOptional()被分类为Int个案。例如,switchvalue{//valueisoftypeAnyObject?caseisString:cell.valueLabel.text=valueas?StringcaseisInt://RealmOptionalareexecutedhereletv=valueas!Intcell.valueLabel.text=String(v)//Float
Realm依靠动态调度来访问ObjectiveC运行时以实现某些KVC机制。模型属性应标记为dynamic用于启用Realm使用的KVC的关键字对象以用精确值填充它们。所以你可以像这样定义模型:classCar:Object{dynamicvarcolor=""dynamicvarage=0}在某种程度上,您可以像这样设置属性:varcar=Car()car["color"]="white"car["age"]=20这适用于所有基本类型,如Int或String但不适用于通用类和结构,因为它们不能在ObjectiveC中表示。Realm使用其中两种类型:ListRealmOptional
Realm的documentationonoptionalproperties状态:String,NSDate,andNSDatapropertiescanbedeclaredasoptionalornon-optionalusingthestandardSwiftsyntax.OptionalnumerictypesaredeclaredusingRealmOptional.为什么数字类型使用非标准的RealmOptional而不是Swift内置的可选语法? 最佳答案 Realm模型类自动为访问底层数据库数据的持久属性实现gett