【问题标题】:How to Change A Label's Text From Another View Controller and Save it With Core Data如何从另一个视图控制器更改标签的文本并使用核心数据保存
【发布时间】:2020-05-01 14:10:23
【问题描述】:

我有一个 Input(UITextfied),我希望其中的数据在我的另一个 ViewController 中更改 DesA

我的第一个 ViewController:面部(标签 DesA 所在的位置) 我的第二个 ViewController:ServiceAChangeViewController(输入和按钮在哪里) (对不起,奇怪的名字)

基本上我想在我的UITextField 中写一个文本,然后单击一个使用核心数据保存它的按钮,然后在我的第一个视图控制器中更改DesA 标签

我按照 youtube 上的一些教程编写了这段代码

第二个视图控制器(ServiceAChangeViewController): var score = Facial(nibName: nil, bundle: nil).TitleChange var OutputLabel = Facial(nibName: nil, bundle: nil).DesA

  ```  @IBAction func saveData(_ sender: Any) {

        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        let entity = NSEntityDescription.entity(forEntityName: "Entity", in: context)
        let newEntity = NSManagedObject(entity: entity!, insertInto: context)

        newEntity.setValue(score, forKey: "titleA")


        do {
            try context.save()
            print("saved")
        } catch {

            print("Failed savign")

        }

    }

    func getData() {

        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Entity")
        request.returnsObjectsAsFaults = false
        do {

            if let result = try? context.fetch(request) as? [NSManagedObject] {
                for data in result  {
                    score = data.value(forKey: "titleA") as! String
                }


        } else {

            print("Failed")
        }

    }
    }


    @IBAction func SubmitAnswer(_ sender: Any) {
        OutputLabel?.text = score
        score = String(InputA.text!)

    }






    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
            getData()
        OutputLabel?.text = score

    }```

第一个 ViewController(面部):

    @IBOutlet var TitleA: UILabel!
    var TitleChange = String()










    override func viewDidAppear(_ animated: Bool) {







 }

但是当我运行应用程序并输入文本时,它似乎并没有改变它也没有保存它。

【问题讨论】:

  • 请正确格式化您的代码。

标签: swift xcode core-data


【解决方案1】:

试试这个来保存核心数据实体,你也可以使用“didset”作为变量

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let newInfo = Entity(entity: Entity.entity(), insertInto: context)

// do something with entity

do {
try context.save() } catch let error as NSError {
print("Error... \(error), \(error)")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 2012-03-30
    • 1970-01-01
    相关资源
    最近更新 更多