在我下面的swift代码中,目标是使用一个helper方法将字符串保存到核心数据中。我正在尝试使用一个try和catch系统。我在catch段后收到一个错误消息,说在预期返回'[Info]?'的示例方法中缺少return。我不知道该用什么作为return语句
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
}
}
}
1条答案
按热度按时间nzk0hqpo1#
将saveText函数的定义更改为以下内容。
由于不需要从该函数返回任何内容,因此可以删除返回类型
或者,如果确实需要返回类型以供将来使用,请将其设置为如下所示,以便在出现错误时返回nil
我建议您不要这样做,因为您已经从上下文创建了一个对象,这意味着即使在保存上下文时出现错误,工作副本也可以包含您创建的数据。这会产生不必要的问题,因为您会看到数据存在,但数据不会被保存。