Xcode 在UIAlertAction中返回int或在UIAlertAction后返回int

Xcode 在UIAlertAction中返回int或在UIAlertAction后返回int,xcode,swift,ios8,Xcode,Swift,Ios8,我想在UIAlertAction中返回一个整数。 现在我得到错误“Int不能转换为Void”。警报所在的函数应该返回Int 这是我的密码: func writeSteps() -> Int { var allergies = 0 var severe = UIAlertController(title: "More information", message: "blablabla", preferredStyle: UIAlertControllerStyle.Aler

我想在UIAlertAction中返回一个整数。 现在我得到错误“Int不能转换为Void”。警报所在的函数应该返回Int

这是我的密码:

func writeSteps() -> Int {
    var allergies = 0

    var severe = UIAlertController(title: "More information", message: "blablabla", preferredStyle: UIAlertControllerStyle.Alert)

    severe.addAction(UIAlertAction(title: "Yes", style: .Default, handler: { (action: UIAlertAction!) in

         allergies += 1
         return allergies


    }))

    severe.addAction(UIAlertAction(title: "No", style: .Default, handler: { (action: UIAlertAction!) in
         allergies += 2
         return allergies

    }))
    self.presentViewController(severe, animated: true, completion: nil)
}
这可能吗


如果不是,每当我尝试在uiAlertController之后返回某个内容时,它会首先返回该内容,然后uialert就会出现。有没有办法让uialert先运行,然后返回一个变量?

如果您只是想更新
allergies
中的值,您可以保留一个对您试图更新的属性(self.allergies)的引用,然后在您的操作中增加它

如果需要返回此值,可以在处理程序中调用第二个方法:

severe.addAction(UIAlertAction(title: "No", style: .Default, handler: { (action: UIAlertAction!) in
     self.returnAllergiesWithVal(2);
}))

其中
returnAllergiesWithVal
方法可以将该值传递到您需要的任何位置。

如果您只是尝试更新
allergies
中的值,则可以保留对您尝试更新的属性(self.allergies)的引用,然后可以在操作中增加该属性

如果需要返回此值,可以在处理程序中调用第二个方法:

severe.addAction(UIAlertAction(title: "No", style: .Default, handler: { (action: UIAlertAction!) in
     self.returnAllergiesWithVal(2);
}))

其中
returnAllergiesWithVal
方法可以将该值传递到您需要的任何位置。

这里的问题是,您是从一个闭包/一个不同的范围内返回的。出于所有的意图和目的,您应该将这些闭包视为完全不同的函数。您需要从闭包外部返回,或者通过闭包返回var。谢谢您的帮助。我怎么能这么做?我在severe.addAction()之外放置的所有内容都在addAction运行之前运行,因此变量没有正确更新。我尝试在闭包中的“in”之前添加“->Int”,它表示找不到成员“Default”,请保留对您尝试更新的属性(
self.allergies
)的引用,然后您可以在操作中增加该属性。这里的问题是,您是从闭包/不同范围内返回的。出于所有的意图和目的,您应该将这些闭包视为完全不同的函数。您需要从闭包外部返回,或者通过闭包返回var。谢谢您的帮助。我怎么能这么做?我在severe.addAction()之外放置的所有内容都在addAction运行之前运行,因此变量没有正确更新。我尝试在闭包中的“in”之前添加“->Int”,它表示找不到成员“Default”,并保留对您尝试更新的属性(
self.allergies
)的引用,然后您可以在操作中增加该属性