如何从另一个视图控制器更改标签的文本并使用核心数据保存

Posted

技术标签:

【中文标题】如何从另一个视图控制器更改标签的文本并使用核心数据保存【英文标题】: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) 







 

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

【问题讨论】:

请正确格式化您的代码。 【参考方案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)")

【讨论】:

以上是关于如何从另一个视图控制器更改标签的文本并使用核心数据保存的主要内容,如果未能解决你的问题,请参考以下文章

使用标签栏从另一个视图返回时如何重新加载视图控制器

快速从另一个访问 Viewcontroller 的实例

如何在使用 UIpageviewcontroller 导航页面时从另一个视图控制器自动更新视图控制器上的标签

从另一个类更改标签文本

从核心数据中获取数据

从另一个片段的其他视图控制片段的视图