在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] 
    } 
} 
+0

谢谢! :)工作! – Heinevolder 2014-11-21 22:01:00

它看起来像你每次检查布尔时间实例化一个新的视图控制器( ViewControllerFirst()似乎应该至少fview,我不认为fview是你想要的实际的ViewController),所以在我看来,它永远是错误的。