JSON结果(NSArray):valueForKey无法按预期工作

时间:2014-06-04 16:28:17

标签: swift ios8

由于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 ????

1 个答案:

答案 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)")
相关问题