Swift - 用API中的Value替换Label文本

时间:2015-04-10 17:50:12

标签: api swift interpolation

我试图创建一个按钮,按下该按钮后,将标签文本更改为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()
     }

enter image description here

1 个答案:

答案 0 :(得分:0)

好像我遇到了返回值的问题,因为它之前有一个换行符,还有一些前导空格(2个字符)所以当用println(newString.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)) 进行测试时我得到8 ,现在实施后

var newString = kik.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

我得到6,这是字符串的正确长度..

对于有此问题的其他人,请注意您的控制台并注意println()语句中的任何换行符或奇怪的间距问题,对我来说,使用以下代码删除空白空间。

  var newString = kik.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())