我有一個簡單的實體:斯威夫特3:準備(爲:發件人:)
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?
}
圖片爲便於理解:
我加載當前實體從核心數據應用成功。此外,我有一個UITableViewController與屬性成員(這是從團隊實體獲取結果的存儲)。
var members: [Team] = []
應用的啓動後(viewDidLoad中(_ :))members.count等於7,這是正確的。此外,成員的所有這些元素通過的UITableView中的UITableViewController使用:
我的任務是打開詳細視圖控制器誰將會從竊聽單元數據。對於這個代表團我用經典準備(爲:發件人:)中的UITableViewController方法(誰是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
然而,我的變量(姓名,電話,部門,職位)都OK。他們與價值觀!
哦,是的。我試着在下面MemberDetailsViewController檢索UILabels數據:
// MARK: - IBOutlets
@IBOutlet weak var memberNameLabel: UILabel!
@IBOutlet weak var memberPhoneNumberLabel: UILabel!
@IBOutlet weak var memberDepartmentLabel: UILabel!
@IBOutlet weak var memberPositionLabel: UILabel!
什麼是可以在這裏是一個問題?
而不是直接從prepare方法(尚未加載)設置IBoutles值,請嘗試在MemberDetailsViewController的viewDidLoad中設置值(爲了您可以創建存儲的屬性並從prepare方法中設置值)。 – Sahil
謝謝@Sahil。這真的是個好主意。 – mcsh0k