如何从另一个视图控制器更改标签的文本并使用核心数据保存
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)")
【讨论】:
以上是关于如何从另一个视图控制器更改标签的文本并使用核心数据保存的主要内容,如果未能解决你的问题,请参考以下文章