【发布时间】:2016-03-06 02:13:11
【问题描述】:
我有一个 UITableView,它使用 NSFetchedResultsController 为 UITableView 获取我的数据。当用户在 UITableView 中选择一行时,我有一个带有两个 UITextFields 的编辑模式视图向上滑动,供用户编辑 UITableViewCell 中的数据。我想要完成的是使用来自核心数据的 UITableViewCell 中的文本设置每个 UITextField 的文本。我这样做是为了让用户不必为了进行编辑而重新输入他们的数据。
问题是当我尝试在 prepareForSegue 中为每个 UITextField 设置文本时,我收到一个致命错误“在展开可选值时意外发现 nil”。我知道数据就在那里,所以我不确定为什么它会找到零。在使用 NSFetchedResultsController 时,我按照 thisstackoverflow 帖子正确编写了我的 prepareForSegue 函数。这是我的代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "edit" {
if let inputController = segue.destinationViewController as? QAInputViewController {
let uri = currentDeck!.objectID.URIRepresentation()
let objectID = managedContext.persistentStoreCoordinator?.managedObjectIDForURIRepresentation(uri)
inputController.currentDeck = managedContext.objectWithID(objectID!) as? Deck
if let indexPath = tableView.indexPathForCell(sender as! DisplayTableViewCell) {
let data = fetchedResultsController.objectAtIndexPath(indexPath) as? Card
inputController.questionInput.text = data?.question
inputController.answerInput.text = data?.answer
}
}
}
}
感谢您的帮助。
【问题讨论】:
-
nil是哪个变量?您是否尝试过添加异常断点来查找崩溃的行? -
从我检查的结果来看,它似乎在这些行上崩溃 inputController.questionInput.text = data?.question inputController.answerInput.text = data?.answer
-
你确定是那些行吗,因为错误提到了“展开”,除非
questionInput或answerInput是隐式展开的选项并且是nil,否则错误可能不存在.你能在代码后面加上断点吗?单步执行该函数,看看它在哪里崩溃。 -
所以我只是在 inputController.answerInput.text = data?.answer 上设置了一个断点并得到了崩溃。之前什么都好。我只是无法设置我的 UITextfields 的文本吗?基本上我只想用我的 TableView 选定行中的核心数据对象填充它们。
标签: swift uitableview core-data nsfetchedresultscontroller