我在最近几天一直被困在这里,并在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)
}
但这只能打印出混乱的混乱。
非常感谢克里斯
答案 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)