我在iOS应用程序中使用领域。在我的应用程序中,我制作了一个目标文件,其中包含一些字符串变量,并且其中还包含一个数组。这是我的Object
领域课程,
class Reminder: Object {
@objc dynamic var name = ""
@objc dynamic var done = false
@objc dynamic var namesArray = [String]()
}
现在在我的VC中,我正在将数组传递给我的namesArray
类的Object
。
let names : [String] = ["Ali","Hammad","Hamza"]
let textFieldReminder = (alertVC.textFields?.first)! as UITextField
let reminderItem = Reminder() // (8)
reminderItem.name = textFieldReminder.text!
reminderItem.done = false
reminderItem.namesArray = names
// We are adding the reminder to our database
try! self.realm.write({
self.realm.add(reminderItem)
现在,当我运行该应用程序时,该应用程序崩溃并显示此错误消息,
Terminating app due to uncaught exception 'RLMException', reason: 'Property 'namesArray' is declared as 'NSArray', which is not a
受支持的RLMObject属性类型。所有属性都必须是原语, NSString,NSDate,NSData,NSNumber,RLMArray,RLMLinkingObjects或 RLMObject的子类。看到 https://realm.io/docs/objc/latest/api/Classes/RLMObject.html了解更多 信息。
如何在我的领域数据库中存储字符串数组?
答案 0 :(得分:3)
您无法将Swift Array 存储到Realm存储。除了使用 Array ,您还可以将其设置为List<String>
。您可以使用append(objectsIn:)
方法。
class Reminder: Object {
@objc dynamic var name = ""
@objc dynamic var done = false
let namesArray = List<String>()
}
然后,只需将新项目添加到列表中,
let names : [String] = ["Ali","Hammad","Hamza"]
let textFieldReminder = (alertVC.textFields?.first)! as UITextField
let reminderItem = Reminder() // (8)
reminderItem.name = textFieldReminder.text!
reminderItem.done = false
reminderItem.append(objectsIn: names)