我是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>()
更新:
您现在可以直接在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
Realm支持的所有其他语言也支持基元类型列表.