我是Realm的新手并且遇到了这个问题.
我有这样的字典
{ firstName : "Mohshin" lastName : "Shah" nickNames : ["John","2","3","4"] }
和这样的一个类
class User: Object { var firstName: String? var lastName: String? var nickNames: [String]? }
当我尝试插入值时,它会抛出异常,如下所示
属性“nickNames”声明为“NSArray”,它不是受支持的RLMObject属性类型.所有属性必须是基元,NSString,NSDate,NSData,NSNumber,RLMArray,RLMLinkingObjects或RLMObject的子类.
有关更多信息,请参见https://realm.io/docs/objc/latest/api/Classes/RLMObject.html.
我也试过了
var nickNames = NSArray() var nickNames = NSMutableArray()
但是没有工作.我是否需要制作Nickname模型类并创建一个属性如下,或者有一种方法可以做到这一点?
var nickNames = List<Nickname>()
更新:
原文链接:/swift/319111.html您现在可以直接在RLMArrays或Lists中存储基本类型或其可空对应项(更具体地说:布尔值,整数和浮点数类型,字符串,日期和数据).如果要定义此类原始值的列表,则不再需要定义繁琐的单字段包装器对象.相反,您可以自己存储原始值.
原始值列表与包含对象的列表的工作方式大致相同,如下面的示例演示Swift:
class Student : Object { @objc dynamic var name: String = "" let testscores = List<Int>() } // Retrieve a student. let realm = try! Realm() let bob = realm.objects(Student.self).filter("name = 'Bob'").first! // Give him a few test scores,and then print his average score. try! realm.write { bob.testscores.removeAll() bob.testscores.append(94) bob.testscores.append(89) bob.testscores.append(96) } print("\(bob.testscores.average()!)") // 93.0