Swift 2.0 Core Data - TableView not reading NSManagedObject

坚强是说给别人听的谎言 提交于 2020-02-02 16:02:34

问题


In first view controller i saved data in core data with uitextfields, i wanted to tableview to read that data in second view controller, i got no errors but i got no display of data in tableview cells. In first VC i made a property of NSManaged object, and in second VC i retrieve that object, put it in tableview but no data is displayed. This is crucial to my understanding about how tableview can read data from core data, thank you a lot.

First VC

import UIKit
import CoreData

class ViewController: UIViewController {

@IBOutlet weak var nameField: UITextField!

@IBOutlet weak var passField: UITextField!

var item = [NSManagedObject]()

override func viewDidLoad() {
    super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}

@IBAction func saveInfo(sender: UIButton) {

    let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let context: NSManagedObjectContext = appDel.managedObjectContext

    //add new user
    let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context)
    newUser.setValue(nameField.text, forKey: "username")
    newUser.setValue(passField.text, forKey: "passwords")

    // add the info to the entity
    do{
        try context.save()
    }catch{
        print("Error, data not saved!")
    }

    // retrieve data

    do{

        let request = NSFetchRequest(entityName: "Users")
        let results = try context.executeFetchRequest(request)

        if results.count > 0 {

            for item in results as! [NSManagedObject]{

                let name = item.valueForKey("username")
                let password = item.valueForKey("passwords")

                print(name!, password!)
        }
        }

        }catch{

        print("Erorr, data not read!")
    }

    nameField.text = ""
    passField.text = ""

    }// end of button function


}

Second VC aka Tableview

import UIKit
import CoreData

class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var tableView: UITableView!

var bridge: ViewController = ViewController()

var array = [NSManagedObject]()

override func viewDidLoad() {
    super.viewDidLoad()

    self.array = self.bridge.item

    self.tableView.delegate = self
    self.tableView.dataSource = self
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func tableView(tableView:UITableView, numberOfRowsInSection section:Int) -> Int
{
    return array.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{

    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)

    let person = array[indexPath.row]
    cell.textLabel!.text = person.valueForKey("username") as? String
    return cell
}

}

来源:https://stackoverflow.com/questions/32863651/swift-2-0-core-data-tableview-not-reading-nsmanagedobject

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!