在Swift中将Bool从一个类返回到另一个
问题描述:
我在这里有一段代码,我似乎无法弄清楚为什么它不起作用。在Swift中将Bool从一个类返回到另一个
viewController应该检查开关是否打开或关闭。
class ViewControllerFirst: UIViewController {
@IBAction func friendFunc(){
if friendSwitch.on{
friendOn = true
} else {
friendOn = false
}
}
func returnFriend() -> Bool{
return friendOn
}
}
如果打开开关,则应将数组添加到tempArray。
import Foundation
struct DareBook {
let fview = ViewControllerFirst()
let dareArrayFriend = [""]
func randomDare() -> String{
var tempArray = [""]
if ViewControllerFirst().returnFriend() == true{
tempArray += dareArrayFriend
}
var unsignedArrayCount = UInt32(tempArray.count)
var unsignedRandomNumber = arc4random_uniform(unsignedArrayCount)
var randomNumber = Int(unsignedRandomNumber)
return tempArray[randomNumber]
}
}
我没有得到任何errormessages当我建立,但是它挑出这条线:
func returnFriend() -> Bool{
答
当您调用该函数时,您正在创建一个新的视图控制器。这可能不是你想要的。
func randomDare() -> String{
var tempArray = [""]
// if ViewControllerFirst().returnFriend() == true{ <--- this line can't be right
if fview.returnFriend() == true{
tempArray += dareArrayFriend
}
var unsignedArrayCount = UInt32(tempArray.count)
var unsignedRandomNumber = arc4random_uniform(unsignedArrayCount)
var randomNumber = Int(unsignedRandomNumber)
return tempArray[randomNumber]
}
}
答
它看起来像你每次检查布尔时间实例化一个新的视图控制器( ViewControllerFirst()
似乎应该至少fview
,我不认为fview是你想要的实际的ViewController),所以在我看来,它永远是错误的。
谢谢! :)工作! – Heinevolder 2014-11-21 22:01:00