<分区>
我有一个简单的实体:
extension Team {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Team> {
return NSFetchRequest<Team>(entityName: "Team")
}
@NSManaged public var name: String?
@NSManaged public var phone: String?
@NSManaged public var department: String?
@NSManaged public var position: String?
}
图片方便理解:
我成功地将当前实体从 Core Data 加载到 App。此外,我有一个带有属性 members 的 UITableViewController(它是从 Team 实体获取结果的存储)。
var members: [Team] = []
应用启动后 (viewDidLoad(_:)) members.count 等于 7,这是正确的。此外,所有这些成员元素都由 UITableViewController 中的 UITableVIew 使用。
我的任务是打开详细 View Controller ,它将从点击的单元格中检索数据。对于这个委托(delegate),我在 UITableViewController 中使用经典的 prepare(for:sender:) 方法(在当前情况下谁是 segue.source):
// MARK: - Navigation
extension TeamListViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == segueIdentifier,
let memberDetailsViewController = segue.destination as? MemberDetailsViewController else {
fatalError("Wrong destination!")
}
guard let selectedIndex = tableView.indexPathForSelectedRow?.row else {
fatalError("Out of range")
}
guard let name = members[selectedIndex].name,
let phone = members[selectedIndex].phone,
let department = members[selectedIndex].department,
let position = members[selectedIndex].position else {
fatalError("No correct data")
}
memberDetailsViewController.memberNameLabel.text! = name
memberDetailsViewController.memberPhoneNumberLabel.text! = phone
memberDetailsViewController.memberDepartmentLabel.text! = department
memberDetailsViewController.memberPositionLabel.text! = position
}
}
因此,应用程序启动,我点击任何我想打开的单元格以获取更多详细信息,然后......应用程序崩溃了!
fatal error: unexpectedly found nil while unwrapping an Optional value
但是,我的变量(姓名、电话、部门、职位)没问题。他们有值(value)观!
哦,是的。我尝试在下面的 MemberDetailsViewController 中检索 UILabels 的数据:
// MARK: - IBOutlets
@IBOutlet weak var memberNameLabel: UILabel!
@IBOutlet weak var memberPhoneNumberLabel: UILabel!
@IBOutlet weak var memberDepartmentLabel: UILabel!
@IBOutlet weak var memberPositionLabel: UILabel!
这里有什么问题?