gpt4 book ai didi

swift - Swift 中返回多个值的字符串

转载 作者:行者123 更新时间:2023-11-30 10:18:10 26 4
gpt4 key购买 nike

我有一个名为“Studio”的 CoreData 实体,其属性名为“name”,并创建了一个 NSManagedObject 子类。

我的应用程序设计为一个简单的过程,在文本框中输入名称,然后按“保存”,该名称将保存到 Studio.name - 按“更新”,文本标签将刷新以显示 Studio 的值.名称

但是,它没有按预期运行,例如,如果我输入名称“Stack”并保存更新,我会在文本标签中看到“Stack”,如果我然后输入“Overflow”保存/更新标签读取“溢出”,如果我第三次将其更新为“Swift”,保存/更新标签将再次读取“堆栈”。

从那里更新将看似随机地给出三个值之一。强制退出应用程序并重新启动它会显示数据正在保存到核心数据,因为按下更新按钮将返回随机的先前值。

我的问题是,字符串是如何发生这种情况的? (它不应该一次只保存一个值吗?)我怎样才能纠正这个问题,使它只保存一个值,任何后续值都会覆盖以前的值?

我的代码如下。

import UIKit
import CoreData

class ViewController: UIViewController {

@IBOutlet weak var studioBox: UITextField!

@IBOutlet weak var nameLabel: UILabel!

@IBAction func saveData(sender: AnyObject) {
var studio = writeStudioData()
studio.name = studioBox.text
}
@IBAction func Update(sender: AnyObject) {
var studio = getStudioData()
nameLabel.text = studio.name
}


func getStudioData() -> Studio {
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let request = NSFetchRequest(entityName: "Studio")
request.returnsObjectsAsFaults = false

let result = managedContext.executeFetchRequest(request, error: nil) as [Studio]
return result[0]
}

func writeStudioData () -> Studio {
let appDelegate =
UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let entityDescription = NSEntityDescription.entityForName("Studio", inManagedObjectContext: managedContext)
let result = Studio(entity: entityDescription!, insertIntoManagedObjectContext: managedContext)
return result
}

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.
}


}

最佳答案

你没有一个对象,你每次都在创建一个新对象。由于您没有在获取请求中包含排序描述符,因此您获取它们的顺序以及相应的名称是未指定的,这意味着它可以是其中的任何一个。

您可以先在 writeStudioData 中执行提取操作,看看是否已经存在一个对象,如果不存在则仅创建一个对象,或者您可以创建一个对象并将其保留在属性中。

关于swift - Swift 中返回多个值的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com