如何使用字典将字符串数组存储到Realm实例中?
我是新来的领域,有这个问题。如何使用字典将字符串数组存储到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
,RLMLinkingObjects
或RLMObject
的子类。
有关更多信息,请参阅https://realm.io/docs/objc/latest/api/Classes/RLMObject.html。
我也曾尝试
var nickNames = NSArray()
var nickNames = NSMutableArray()
但不是working.Do我需要做的昵称模型类,并创建一个属性如下或有办法做到这一点?
var nickNames = List<Nickname>()
境界不支持是NSArray
s和目前不支持是List
原始宗教的类型(如List
小号串)的属性模特属性。现在,您应该创建一个包装昵称字符串的Nickname
模型,然后存储List<Nickname>
,如上面的示例代码。
This ticket在我们的GitHub存储库中跟踪对原语列表的支持,尽管2014年没有任何评论特别重要。如果您想了解该功能何时可用,您可以关注该门票。
(另请注意,您应该声明您的列表财产let
,不var
。)
为此类昵称创建模型 ''' class昵称:对象{ dynamic var value:String! }''' 和取得的昵称属性作为 '让昵称=列表
'John'不在您发表评论中发布的任何代码片段中。你能用你正在使用的实际代码更新你的问题吗? – AustinZ
约翰是昵称的价值..我刚刚重新命名的变数,没有别的..你可以拥有'1'。仍然更新问题 –
使用列表是相当多的做到这一点的唯一途径。在初始化Nickname对象(您在List中创建的领域对象)时,应该为值param提供一个数组,即使该值实际上只是一个字符串。例如:
let aNickName = Nickname(value:["John"])
这就是为什么它被扔一个错误说“无效值‘约翰’初始化类型‘昵称’的对象”。
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
的领域支持的所有其他语言也支持原始类型的列表。
领域现在直接支持基元类型列表。请参阅[此答案](https://*.com/a/48339013/1315347)。 – bmunk