IOS。将数据输入表格(比萨饼的名称和价格)并在另一个视图控制器上查看(在标签中)

时间:2017-01-23 02:54:08

标签: ios swift cocoa

已经为核心数据代码设置了一个类来保存和检索,然后在第一个视图控制器上有一个表单输入比萨饼的价格和名称,一个保存按钮,用于从dbmanager链接保存方法,和一个查看按钮,用于查看表中保存的数据。

现在我不确定我的保存方法是否正确,但我还没有错误。 但我不知道如何在第二个视图控制器标签的表中显示输入的数据。

这是我对IOS的第一次尝试

第一个视图控制器:

 import UIKit
    import CoreData

    class ViewController: UIViewController {


    @IBOutlet weak var price: UITextField!
    @IBOutlet weak var name: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

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

    @IBAction func save(_ sender: Any) {
        let db = DatabaseManager()
        db.addRow(name: name.text!, price: price.text!)
    }

    @IBAction func view(_ sender: Any) {
       let db = DatabaseManager()
        func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
            if segue.identifier == "mySegue" {
            let controller : allPizzas =      segue.destination as!  allPizzas

下面的这一行说明不能将[string]类型的值赋给字符串

controller.pizzaTxt = db.retrieveRows()

        }
    }


   `enter code here`// }

    func showMessage(msg: String)
    {
        let alert = UIAlertController(title: "Message", message: msg, preferredStyle: UIAlertControllerStyle.alert)
        alert.addAction(UIAlertAction(title: "Okay", style: UIAlertActionStyle.default, handler: nil))
        self.present(alert, animated: true, completion: nil)
    }
}




}

第二个视图控制器:

    import UIKit
import CoreData
class allPizzas: UIViewController {


    //label to display the pizzas
    @IBOutlet weak var output: UILabel!

    var pizzaTxt : String = ""


    override func viewDidLoad() {
        super.viewDidLoad()

        output.text = pizzaTxt;
        // Do any additional setup after loading the view.
    }

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

数据库管理员:

import UIKit
import CoreData

class DatabaseManager: NSObject {

    var pizzas: [NSManagedObject] = []
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    func addRow( name:String, price:String) {
        // set the core data to access the Student Entity
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            return }
        let managedContext = appDelegate.persistentContainer.viewContext
        let entity = NSEntityDescription.entity(forEntityName: "Pizzas", in: managedContext)
        let pizza = NSManagedObject(entity: entity!, insertInto: managedContext)
        pizza.setValue(name,  forKey: "name")
        pizza.setValue(price, forKey: "price")
            do {
            try managedContext.save()
            pizzas.append(pizza)
             //showMessage(msg: "Information is added")
            }
            catch {
              //showMessage(msg: "Error While Adding to Core Data")
                }

    }



    func retrieveRows() -> [String] {  // return array of Strings
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            return [""]}
        let managedContext = appDelegate.persistentContainer.viewContext
        let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Pizzas")
        do {
            pizzas  = try managedContext.fetch(fetchRequest)
        }
        catch{
            // show something
        }
        var msg : [String] = []
        var count = 0
        for pizza in pizzas {
            msg.append((pizza.value(forKeyPath: "name") as? String)!)
            count += 1
        }
          msg = [String(count)]
        return msg
    }




}

0 个答案:

没有答案