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



我有一个输入(UITextified(,我希望其中的数据在我的另一个ViewController 中更改DesA

我的第一个视图控制器:面部(标签DesA所在的位置(我的第二个视图控制器:ServiceAChangeViewController(输入和按钮所在((为这些奇怪的名字感到抱歉(

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

我在youtube上学习了一些教程,并编写了以下代码

第二个视图控制器(ServiceAChangeViewController(:var score=面部(nibName:nil,bundle:nil(。标题更改var OutputLabel=面部(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
}```

First ViewController(面部(:

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





override func viewDidAppear(_ animated: Bool) {



}

但当我运行应用程序并输入文本时,它似乎既不会更改也不会保存

为了保存核心数据实体,您也可以使用变量的"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)")
}

最新更新