在试图保存到核心数据的try catch中缺少返回语句



在我的swift代码下面的目标是使用一个助手方法来保存字符串到核心数据。我正在尝试使用试捕系统。我得到一个错误后捕获段说在实例方法中丢失返回预期返回'[信息]?'。我不知道该把什么作为返回语句

import UIKit;import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.

DataBaseHelper.shareInstance.saveText("Jessica")


DataBaseHelper.shareInstance.saveText("ashley")
}

}
class DataBaseHelper {

private class func getContext() -> NSManagedObjectContext {
let appDelegate = UIApplication.shared.delegate as! AppDelegate

return appDelegate.persistentContainer.viewContext
}


static let shareInstance = DataBaseHelper()
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

func saveText(_ string: String) -> [Info]? {
let imageInstance = Info(context: context)
imageInstance.txt = string
do {
try context.save()


} catch{

}

}


class func fetchObject() -> [Info]?
{   
let context = getContext()
var user : [Info]? = nil
do {
user = try context.fetch(Info.fetchRequest())

return user

} catch {
return user
}

}


}

将saveText函数的定义改为如下:

func saveText(_ string: String) {
let imageInstance = Info(context: context)
imageInstance.txt = string
do {
try context.save()
} catch let err {
print(err.localizedDescription)
}

}

由于不需要从该函数返回任何内容,因此可以删除返回类型

或者,如果您确实想要一个返回类型以供将来使用,请这样做,以便在出现错误

时返回nil
func saveText(_ string: String) -> Info? {
let imageInstance = Info(context: context)
imageInstance.txt = string
do {
try context.save()
return imageInstance
} catch{
return nil
}

}

我建议不要这样做,因为您已经从上下文创建了一个对象,这意味着即使在保存上下文时出现错误,工作副本也可以拥有您创建的数据。这会产生不必要的问题,因为您会看到数据存在,但数据不会被保存。

相关内容

  • 没有找到相关文章

最新更新