我在我的 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)
现在,当我运行应用程序时,应用程序崩溃并显示此错误消息,
Run Code Online (Sandbox Code Playgroud)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。
如何在我的领域数据库中存储字符串数组?
您不能将 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)
| 归档时间: |
|
| 查看次数: |
3687 次 |
| 最近记录: |