由于Web服务(JSON)请求,我有一个NSArray。
如果我打印NSLog("%@", jsonResult)
数组,它会正确显示:
(
{
text = “Some text”;
coordinates = “11.333345 - 09.33349”;
}
{
text = “Some text2”;
coordinates = “11.333345 - 09.33349”;
}
{
text = “Some text3”;
coordinates = “11.333345 - 09.33349”;
}
…
)
但是如果我尝试访问密钥" text"的值使用我的以下函数对NSArray中的每个条目进行处理,我总是得到这样的输出:
Text )r'ì• (instead of "Some text2, 3 ....")
所以我认为类型不匹配,但我不知道如何找出问题所在。 在Objective-C中,它非常有效。
func getResult(){
self.webService.getResult({ jsonResult in
jsonResult!.enumerateObjectsUsingBlock({ object, index, stop in
var txt : NSString = object.valueForKey("text") as NSString
NSLog("Text %s", txt)
})
NSLog("Ready %@", jsonResult!)
});
}
任何想法出了什么问题?
更新1
我想通了,如果我只使用NSObject而不是NSString,它会显示正确的文字
var txt : NSObject = object.valueForKey("text") as NSObject
NSLog("%@", txt)
但无论如何,我必须将NSObject对象强制转换为NSString或String,以显示......
期望显示字符串的编码...或如何投射此NSObject ????
答案 0 :(得分:4)
var txt : NSString = object.valueForKey("text") as NSString
NSLog("Text %s", txt)
问题是%s
格式说明符,适用于C风格的字符串。您需要%@
,这是对象。
在Swift中,建议使用println()
,它会完全取消格式字符串:
var txt : NSString = object.valueForKey("text") as NSString
println("Text \(txt)")