具有 NSData 变量的领域对象,在展开可选值时意外发现 nil
Posted
技术标签:
【中文标题】具有 NSData 变量的领域对象,在展开可选值时意外发现 nil【英文标题】:Realm object with NSData variable , unexpectedly found nil while unwrapping an Optional value 【发布时间】:2016-05-14 22:22:12 【问题描述】:将 NSData 变量添加到我的领域模型后出现错误:
致命错误:在展开 Optional 时意外发现 nil 价值
当我不使用 NSData 值时,不会出现此错误。
这是我的简单物品 (Item.swift)
class Item: Object
dynamic var Name: String = ""
dynamic var Adress:String = ""
dynamic var image: NSData = NSData()
我在返回 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
【问题讨论】:
我认为初始化Realm时出错。也许是迁移错误?您可以尝试打印错误吗?像下面这样: catch let error as NSError print(error)
>UserInfo=错误代码=10, NSLocalizedDescription=由于以下错误,需要迁移:- 属性“图像”已添加到最新对象模型。 致命错误:展开时意外发现 nil一个可选值现在我得到这个错误
只需要从模拟器中删除我的应用程序***.com/questions/33363508/… ...谢谢@kishikava katsumi
【参考方案1】:
错误消息说需要迁移。
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)
迁移过程需要两个步骤。首先,增加架构版本。然后在迁移块中定义迁移。但是如果是简单的添加/删除属性,自动迁移就可以了。所以你不需要定义迁移块。只需增加架构版本即可。
2。删除现有应用并重新安装
删除应用程序意味着删除现有的数据文件。因此,下次启动应用程序时,将使用新架构创建一个新数据文件。
3。使用deleteRealmIfMigrationNeeded
属性
当deleteRealmIfMigrationNeeded
为真时,如果需要迁移,数据文件将被删除并使用新架构自动重新创建。
let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true)
do
let realm = try Realm(configuration: config)
【讨论】:
以上是关于具有 NSData 变量的领域对象,在展开可选值时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 在展开可选值时意外发现 nil - 从委托调用变量
尝试将谓词与关系对象一起使用时,“致命错误:在展开可选值时意外发现 nil”
IBOutlet 变量在我尝试访问它们时返回 nil。错误:线程 1:致命错误:在展开可选值时意外发现 nil