在我的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)
}
}
由于不需要从该函数返回任何内容,因此可以删除返回类型
或者,如果您确实想要一个返回类型以供将来使用,请这样做,以便在出现错误
时返回nilfunc saveText(_ string: String) -> Info? {
let imageInstance = Info(context: context)
imageInstance.txt = string
do {
try context.save()
return imageInstance
} catch{
return nil
}
}
我建议不要这样做,因为您已经从上下文创建了一个对象,这意味着即使在保存上下文时出现错误,工作副本也可以拥有您创建的数据。这会产生不必要的问题,因为您会看到数据存在,但数据不会被保存。