带有 NSData 变量的领域对象,在展开可选值时意外发现 nil
Realm object with NSData variable , unexpectedly found nil while unwrapping an Optional value
将 NSData 变量添加到我的领域模型后出现错误:
fatal error: unexpectedly found nil while unwrapping an Optional
value
当我不使用 NSData 值时,不会出现此错误。
这是我的简单项目 (Item.swift)
class Item: Object {
dynamic var Name: String = ""
dynamic var Adress:String = ""
dynamic var image: NSData = NSData()
}
我在 return dataSource.Count 收到此错误:
var dataSource: Results<Item>!
let itemDetailSegue = "showItemDetail";
var loadCurrentItem: Item!
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
reloadTable()
}
override func viewDidLoad() {
super.viewDidLoad()
reloadTable()
}
// MARK: - Table view data source
func reloadTable(){
do{
let realm = try Realm()
dataSource = realm.objects(Item)
tableView?.reloadData()
}catch{
print("ERROR ReloadTable")
}
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataSource.count
}
错误消息说需要迁移。
Migration is required due to the following errors: - Property 'image' has been added to latest object model.
可以通过三种方法解决此错误。
1。增加架构版本
let config = Realm.Configuration(schemaVersion: 1) // Increment schema version
do {
let realm = try Realm(configuration: config)
迁移过程需要两个步骤。首先,增加模式版本。然后在迁移块中定义迁移。但是,如果是简单的 add/delete 属性,则自动迁移会起作用。所以你不需要定义迁移块。只需增加模式版本。
2。删除现有应用并重新安装
删除应用程序意味着删除现有的数据文件。因此,下次您启动该应用程序时,将使用新架构创建一个新数据文件。
3。使用 deleteRealmIfMigrationNeeded
属性
当 deleteRealmIfMigrationNeeded
为 true 时,如果需要迁移,数据文件将被删除并使用新架构自动重新创建。
let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true)
do {
let realm = try Realm(configuration: config)
将 NSData 变量添加到我的领域模型后出现错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
当我不使用 NSData 值时,不会出现此错误。
这是我的简单项目 (Item.swift)
class Item: Object {
dynamic var Name: String = ""
dynamic var Adress:String = ""
dynamic var image: NSData = NSData()
}
我在 return dataSource.Count 收到此错误:
var dataSource: Results<Item>!
let itemDetailSegue = "showItemDetail";
var loadCurrentItem: Item!
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
reloadTable()
}
override func viewDidLoad() {
super.viewDidLoad()
reloadTable()
}
// MARK: - Table view data source
func reloadTable(){
do{
let realm = try Realm()
dataSource = realm.objects(Item)
tableView?.reloadData()
}catch{
print("ERROR ReloadTable")
}
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataSource.count
}
错误消息说需要迁移。
Migration is required due to the following errors: - Property 'image' has been added to latest object model.
可以通过三种方法解决此错误。
1。增加架构版本
let config = Realm.Configuration(schemaVersion: 1) // Increment schema version
do {
let realm = try Realm(configuration: config)
迁移过程需要两个步骤。首先,增加模式版本。然后在迁移块中定义迁移。但是,如果是简单的 add/delete 属性,则自动迁移会起作用。所以你不需要定义迁移块。只需增加模式版本。
2。删除现有应用并重新安装
删除应用程序意味着删除现有的数据文件。因此,下次您启动该应用程序时,将使用新架构创建一个新数据文件。
3。使用 deleteRealmIfMigrationNeeded
属性
当 deleteRealmIfMigrationNeeded
为 true 时,如果需要迁移,数据文件将被删除并使用新架构自动重新创建。
let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true)
do {
let realm = try Realm(configuration: config)