在领域中存储字符串数组

时间:2018-08-28 16:14:10

标签: ios swift realm

我在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了解更多   信息。

如何在我的领域数据库中存储字符串数组?

1 个答案:

答案 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)