在 Realm 中存储字符串数组

Ham*_*mza 3 realm ios swift

我在我的 iOS 应用程序中使用领域。在我的应用程序中,我制作了一个目标文件,其中有一些字符串变量,并且其中还有一个数组。这是我Object的领域课程,

class Reminder: Object {
  @objc dynamic var name = ""
  @objc dynamic var done = false
  @objc dynamic var namesArray = [String]()
}
Run Code Online (Sandbox Code Playgroud)

现在在我的 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)  
Run Code Online (Sandbox Code Playgroud)

现在,当我运行应用程序时,应用程序崩溃并显示此错误消息,

Terminating app due to uncaught exception 'RLMException', reason: 'Property 'namesArray' is declared as 'NSArray', which is not a
Run Code Online (Sandbox Code Playgroud)

支持的 RLMObject 属性类型。所有属性都必须是原语、NSString、NSDate、NSData、NSNumber、RLMArray、RLMLinkingObjects 或 RLMObject 的子类。有关更多信息,请参阅 https://realm.io/docs/objc/latest/api/Classes/RLMObject.html

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

San*_*eep 7

您不能将 Swift数组存储到 Realm 存储。而不是使用Array你可以让它List<String>。你可以使用append(objectsIn:)方法。

class Reminder: Object {
  @objc dynamic var name = ""
  @objc dynamic var done = false
  let namesArray = List<String>()
}
Run Code Online (Sandbox Code Playgroud)

然后,只需像这样将新项目附加到列表中,

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)
Run Code Online (Sandbox Code Playgroud)