在函数内部抛出错误,但不在外部
Throwing error inside function, but not outside
我一直在使用 dbconnect 函数中的常量和变量来允许直接访问我的核心数据变量。
当我输入这样的代码时,它起作用了:
@IBAction func createNewGame(sender: AnyObject) {
let entityDescription = NSEntityDescription.entityForName("StudioData", inManagedObjectContext: managedObjectContext!)
let studioData = StudioData(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext)
var error: NSError?
managedObjectContext?.save(&error)
if let err = error {
println(err.localizedFailureReason)
} else {
println("Studio Created")
}
studioData.studioname = studioNameText.text
studioData.execFirstName = firstNameText.text
studioData.execLastName = lastNameText.text
}
但是当它变成这样的时候 returns "Unresolved identifier studioData"
@IBAction func createNewGame(sender: AnyObject) {
dbconnect()
studioData.studioname = studioNameText.text
studioData.execFirstName = firstNameText.text
studioData.execLastName = lastNameText.text
}
func dbconnect () {
let entityDescription = NSEntityDescription.entityForName("StudioData", inManagedObjectContext: managedObjectContext!)
let studioData = StudioData(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext)
var error: NSError?
managedObjectContext?.save(&error)
if let err = error {
println(err.localizedFailureReason)
} else {
println("Studio Created")
}
}
我正在尝试将代码放入函数中以减少不同函数之间的重复。
我错过了什么?
错误是说变量 studioData
没有在 createNewGame(sender:)
中定义。由于您想使用 dbconnect()
的结果,我建议将创建的对象传回给调用者。有很多方法可以做到这一点,但这里有一个:
@IBAction func createNewGame(sender: AnyObject) {
var studioData = dbconnect()
studioData.studioname = studioNameText.text
studioData.execFirstName = firstNameText.text
studioData.execLastName = lastNameText.text
}
func dbconnect () -> StudioData {
let entityDescription = NSEntityDescription.entityForName("StudioData", inManagedObjectContext: managedObjectContext!)
let studioData = StudioData(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext)
var error: NSError?
managedObjectContext?.save(&error)
if let err = error {
println(err.localizedFailureReason)
} else {
println("Studio Created")
}
return studioData
}
我一直在使用 dbconnect 函数中的常量和变量来允许直接访问我的核心数据变量。
当我输入这样的代码时,它起作用了:
@IBAction func createNewGame(sender: AnyObject) {
let entityDescription = NSEntityDescription.entityForName("StudioData", inManagedObjectContext: managedObjectContext!)
let studioData = StudioData(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext)
var error: NSError?
managedObjectContext?.save(&error)
if let err = error {
println(err.localizedFailureReason)
} else {
println("Studio Created")
}
studioData.studioname = studioNameText.text
studioData.execFirstName = firstNameText.text
studioData.execLastName = lastNameText.text
}
但是当它变成这样的时候 returns "Unresolved identifier studioData"
@IBAction func createNewGame(sender: AnyObject) {
dbconnect()
studioData.studioname = studioNameText.text
studioData.execFirstName = firstNameText.text
studioData.execLastName = lastNameText.text
}
func dbconnect () {
let entityDescription = NSEntityDescription.entityForName("StudioData", inManagedObjectContext: managedObjectContext!)
let studioData = StudioData(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext)
var error: NSError?
managedObjectContext?.save(&error)
if let err = error {
println(err.localizedFailureReason)
} else {
println("Studio Created")
}
}
我正在尝试将代码放入函数中以减少不同函数之间的重复。
我错过了什么?
错误是说变量 studioData
没有在 createNewGame(sender:)
中定义。由于您想使用 dbconnect()
的结果,我建议将创建的对象传回给调用者。有很多方法可以做到这一点,但这里有一个:
@IBAction func createNewGame(sender: AnyObject) {
var studioData = dbconnect()
studioData.studioname = studioNameText.text
studioData.execFirstName = firstNameText.text
studioData.execLastName = lastNameText.text
}
func dbconnect () -> StudioData {
let entityDescription = NSEntityDescription.entityForName("StudioData", inManagedObjectContext: managedObjectContext!)
let studioData = StudioData(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext)
var error: NSError?
managedObjectContext?.save(&error)
if let err = error {
println(err.localizedFailureReason)
} else {
println("Studio Created")
}
return studioData
}