我從核心數據獲取NSManagedObjects並嘗試填充tableview。當我得到的對象數組我能夠訪問和打印屬性。但是當我嘗試訪問相同的tableView cellForRowAtIndexpath我得到零值。這是爲什麼發生?在Swift中訪問NSManagedObject屬性
{
import UIKit
類爲NotesView:UIViewController中,的UITableViewDelegate,UITableViewDataSource {
//MARK:- IBOutlets
@IBOutlet weak var NotesTable: UITableView!
var notesArray = [Notes]()
//MARK:- ViewController Delegates
override func viewDidLoad() {
super.viewDidLoad()
notesArray = Notes.getNotes()
for value in notesArray{
print(value.body!)
}
print(notesArray[0].body)
NotesTable.delegate = self
NotesTable.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//MARK:- TabelView Delegate Methods
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return notesArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("NotesTableCell")
for value in notesArray{
print("Value = \(value.body)")
}
cell?.textLabel?.text = (notesArray[indexPath.row]).body!
return cell!
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let vc = UIStoryboard(name: "Main",bundle: nil).instantiateViewControllerWithIdentifier("NewNoteVC") as! NewNoteView
vc.display = true
vc.text = notesArray[indexPath.row].body!
self.presentViewController(vc, animated: false, completion: nil)
}
}
你確定所有'Notes'實例都有'body'值嗎?如果您強制將零值設爲非零,那麼會顯示這些錯誤 –
是的,有2個值並且正確打印。如果沒有主體值,則錯誤應該在viewdidload本身中。 – Hemanth
爲了幫助其他人回答並提供幫助,最好是將代碼發佈到此處而不是鏈接圖像。 –