2017-02-21 59 views
3

我是新来的领域,有这个问题。如何使用字典将字符串数组存储到Realm实例中?

我有一个Dictionary这样

{ 
    firstName : "Mohshin" 
    lastName : "Shah" 
    nickNames : ["John","2","3","4"]    
} 

class这样

class User: Object { 
    var firstName: String? 
    var lastName: String? 
    var nickNames: [String]? 
} 

当我试图插入它抛出一个异常,如下

物业的价值观nickNames'被声明为'NSArray',它不是支持的RLMObject属性类型。所有属性必须是基元,NSString,NSDate,NSData,NSNumber,RLMArray,RLMLinkingObjectsRLMObject的子类。
有关更多信息,请参阅https://realm.io/docs/objc/latest/api/Classes/RLMObject.html
我也曾尝试

var nickNames = NSArray() 

var nickNames = NSMutableArray() 

但不是working.Do我需要做的昵称模型类,并创建一个属性如下或有办法做到这一点?

var nickNames = List<Nickname>() 
+0

领域现在直接支持基元类型列表。请参阅[此答案](https://stackoverflow.com/a/48339013/1315347)。 – bmunk

回答

0

境界不支持是NSArray s和目前不支持是List原始宗教的类型(如List小号串)的属性模特属性。现在,您应该创建一个包装昵称字符串的Nickname模型,然后存储List<Nickname>,如上面的示例代码。

This ticket在我们的GitHub存储库中跟踪对原语列表的支持,尽管2014年没有任何评论特别重要。如果您想了解该功能何时可用,您可以关注该门票。

(另请注意,您应该声明您的列表财产let,不var。)

+0

为此类昵称创建模型 ''' class昵称:对象{ dynamic var value:String! }''' 和取得的昵称属性作为 '让昵称=列表()' 据崩溃 ''' 值无效 '约翰' 初始化类型的 '昵称' 对象:缺少关键'值'' ''' –

+0

'John'不在您发表评论中发布的任何代码片段中。你能用你正在使用的实际代码更新你的问题吗? – AustinZ

+0

约翰是昵称的价值..我刚刚重新命名的变数,没有别的..你可以拥有'1'。仍然更新问题 –

0

使用列表是相当多的做到这一点的唯一途径。在初始化Nickname对象(您在List中创建的领域对象)时,应该为值param提供一个数组,即使该值实际上只是一个字符串。例如:

let aNickName = Nickname(value:["John"]) 

这就是为什么它被扔一个错误说“无效值‘约翰’初始化类型‘昵称’的对象”。

0

UPDATE:

您现在可以存储原始类型或它们可为空的对应物:直接在RLMArrays或解释(更具体地布尔,整数和浮点数的类型,字符串,日期和数据)。如果你想定义一个这样的原始值列表,你不再需要定义繁琐的单字段包装器对象。相反,你可以直接存储原始值。原始值的

列出的工作几乎相同的方式为包含对象的列表,如下面的例子演示了斯威夫特:

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 

的领域支持的所有其他语言也支持原始类型的列表。

相关问题