转换原始数据“AnyObject?”到NSData或String

时间:2015-01-07 16:16:48

标签: ios iphone swift ios8

我在最近几天一直被困在这里,并在Stackoverflow和网络上阅读了无数的帖子,但我仍然有点失落。 (顺便说一句,我是Swift的新手)。

我有以下代码

Alamofire.request(.GET, "url") .response { (request, response, data, error) in printIn(data)}

这会在控制台中输出一长串数字,这是完美的,正是我所需要的。

但是我现在想迭代这些并获取某个索引的数字,所以想把它转换成字符串或NSData。

我尝试了很多不同的方法,但还没有找到怎么做,如果有人能帮助我,我会非常感激。

我尝试过使用

Alamofire.request(.GET, "url")
    .responseString(encoding: NSASCIIStringEncoding) { (request, response, data, error) -> Void in
        println(data)
    }

但这只能打印出混乱的混乱。

非常感谢

克里斯

2 个答案:

答案 0 :(得分:5)

你说:

  

但是我现在想迭代这些并获取某个索引的数字,所以想将其转换为字符串或NSData

当您使用response时,实际data参数NSData。因此,只需将变量转换为适当的类型,您就应该开展业务,例如:

Alamofire.request(.GET, urlString)
    .response { (request, response, data, error) in
        if let data = data as? NSData {
            for i in 0 ..< data.length {
                var byte: UInt8!
                data.getBytes(&byte, range: NSMakeRange(i, 1))
                print(String(format: "%02x ", byte))
            }
        }
}

在我的示例循环中,只记录byte变量的十六进制字符串表示,但它是一个数值,您可以使用它来执行任何操作。

答案 1 :(得分:2)

数据是NSData和ascii编码(在你的第二个例子中)

let s = NSString(data: data, encoding: NSASCIIStringEncoding)

在第一种情况下,您没有指定编码,因此默认为NSUTF8

let s = NSString(data: data, encoding: NSUTF8StringEncoding)