将原始数据 "AnyObject?" 转换为 NSData 或 String
Convert Raw Data "AnyObject?" to NSData or String
过去几天我一直被困在这个问题上,并且在 Whosebug 和网络上阅读了无数帖子,但我仍然有点迷茫。 (顺便说一下,我是 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)
}
但这只会打印出一团乱麻。
非常感谢
克里斯
数据是 NSData 和 ascii 编码的(在你的第二个例子中)
let s = NSString(data: data, encoding: NSASCIIStringEncoding)
在第一种情况下,您没有指定编码,因此它默认为 NSUTF8
let s = NSString(data: data, encoding: NSUTF8StringEncoding)
你说:
However I now would like to iterate through these and get the number at certain index's, so would like to convert this into a string or 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
变量的十六进制字符串表示,但它是一个数值,您可以使用它做任何您想做的事情。
过去几天我一直被困在这个问题上,并且在 Whosebug 和网络上阅读了无数帖子,但我仍然有点迷茫。 (顺便说一下,我是 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)
}
但这只会打印出一团乱麻。
非常感谢
克里斯
数据是 NSData 和 ascii 编码的(在你的第二个例子中)
let s = NSString(data: data, encoding: NSASCIIStringEncoding)
在第一种情况下,您没有指定编码,因此它默认为 NSUTF8
let s = NSString(data: data, encoding: NSUTF8StringEncoding)
你说:
However I now would like to iterate through these and get the number at certain index's, so would like to convert this into a string or
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
变量的十六进制字符串表示,但它是一个数值,您可以使用它做任何您想做的事情。