我试图创建一个按钮,按下该按钮后,将标签文本更改为API返回的值。
我创建了一个简单的php页面来查询我的数据库并返回'count'。
在我的IBAction中,我可以将标签文本设置为普通字符串,如“test”,它可以正常工作,但如果我尝试使用插值,它似乎不起作用..
出于调试目的,我添加了一行
println( "TypeName0 = \(_stdlib_getDemangledTypeName(kik))")
其中kik是我的变量,它从API中分配了值,在运行时我得到
TypeName0 = Swift.String
我期望的是,因为我想替换labelText.text = kik
有谁可以解释为什么我可以轻松地用普通字符串替换labelText而不是从API返回的值?
我的完整代码如下。
@IBAction func getSavingsCardCount(sender: AnyObject) {
let url = NSURL(string: "http://testurlforstackoverflow.php")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!){(data, response, error) in
dispatch_async(dispatch_get_main_queue(), { () in
let kik = NSString(data: data, encoding: NSUTF8StringEncoding)! as String
println( "TypeName0 = \(_stdlib_getDemangledTypeName(kik))")
// self.scCountLabel.text = "TEST WORKS!" this will work but the following line will not
self.scCountLabel.text = "\(kik)"
println(kik)
})
}
task.resume()
}
答案 0 :(得分:0)
好像我遇到了返回值的问题,因为它之前有一个换行符,还有一些前导空格(2个字符)所以当用println(newString.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
进行测试时我得到8 ,现在实施后
var newString = kik.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
我得到6,这是字符串的正确长度..
对于有此问题的其他人,请注意您的控制台并注意println()语句中的任何换行符或奇怪的间距问题,对我来说,使用以下代码删除空白空间。
var newString = kik.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())