UIButton标签从字母数字值转换

时间:2016-04-27 06:50:09

标签: swift uibutton

我从MongoDB获取用户ID为String。我想将此user-id设置为UIButton的标记属性。由于此user-id是字母数字,因此我无法将此user-id设置为该UIButton的标记,因为tag的数据类型为Int。那么如何将标签作为从MongoDB检索到的用户ID分配给该UIButton?

3 个答案:

答案 0 :(得分:2)

你不应该这样做。创建一个字典[String: Int]来保存从mongo ID到标签的映射,然后您可以使用标签的计数器来获得唯一性。

如果您需要,可以尝试使用字符串hashValue,但我不建议这样做。

另一个选项是使用关联值将实际字符串存储在按钮上。

在更高级别,我会问你为什么要这样做。看起来你的程序结构可能不是很好。您可以在此处提出更多问题或在https://developer.apple.com/downloads/上提出应用设计问题,我们很乐意为您提供帮助。

答案 1 :(得分:0)

非常简单

button.tag = Int(yourstring)

确保您的字符串不应包含字符。

了解有关它的更多信息 Swift Basic

答案 2 :(得分:0)

你的问题不明确。起初你说你不能在swift中将字符串设置为按钮标记。然后你说你不能将整数设置为按钮标记。从我理解你想要将从mongodb检索的用户ID设置为按钮标记的问题。但由于此检索到的用户ID是字母数字,因此您无法设置按钮标记,因为swift仅允许整数作为按钮标记。

所以我建议将mongodb中user-id的数据类型更改为integer,或者在mongodb中为button标签添加一个新的整数字段。或者您可以使用其他值作为按钮标记。要明确的是,iOS只允许Int作为任何UIElements的标记属性。

修改 如果您想从字母数字用户ID获取Int,可以使用以下代码。

 let str = "571db47a342c2e307cb4af35)"
 let components = str.componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet)
 let part = components.joinWithSeparator("")
 let myint = NSNumberFormatter().numberFromString(part)!
 //let myint = Int(part) // returns nil because sizeof(Int) = 4 
 //let myint = Double(part) // returns 571473422307435.0
 print(myint)