我从MongoDB获取用户ID为String。我想将此user-id设置为UIButton的标记属性。由于此user-id是字母数字,因此我无法将此user-id设置为该UIButton的标记,因为tag的数据类型为Int。那么如何将标签作为从MongoDB检索到的用户ID分配给该UIButton?
答案 0 :(得分:2)
你不应该这样做。创建一个字典[String: Int]
来保存从mongo ID到标签的映射,然后您可以使用标签的计数器来获得唯一性。
如果您需要,可以尝试使用字符串hashValue
,但我不建议这样做。
另一个选项是使用关联值将实际字符串存储在按钮上。
在更高级别,我会问你为什么要这样做。看起来你的程序结构可能不是很好。您可以在此处提出更多问题或在https://developer.apple.com/downloads/上提出应用设计问题,我们很乐意为您提供帮助。
答案 1 :(得分:0)
答案 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)