【发布时间】:2020-02-05 10:06:38
【问题描述】:
我正在使用以下代码从 Swift 中的字节数组中加载字符串
let bytes = data[position...position + length]
guard let let dateString = String(bytes: bytes, encoding: .utf8)
else {return}
这给了我一个有效的字符串,例如"20160714"。
使用DateFormatter 然后我尝试使用以下内容从字符串中解析日期
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYYMMdd"
let date = dateFormatter.date(from: dateString)
这应该工作,但date 始终是nil。当我在操场上用字符串文字 (let dateString = "20160714") 尝试同样的事情时,它按预期工作,我认为这与编码有关。
非常感谢任何帮助。
编辑: 我已经尝试了 YYYY 和 yyyy 一年,都返回 nil
还值得注意的是,字节数组来自使用
将文件加载到内存中guard let data = try? NSData(contentsOfFile: urlString,
options: .alwaysMapped)
else {fatalError("Invalid file")}
根据@vadian 的要求,在控制台中打印Data(bytes) as NSData 会得到以下输出
{length = 8, bytes = 0x3230313630373134}
【问题讨论】:
-
使用“yyyy”而不是“YYYY”
-
@JoakimDanielson 我尝试了两种变体都没有成功,我更新了我的问题以反映这一点。谢谢
-
请
print(bytes as NSData)并将结果添加到问题中。 Joakim 是对的YYYY是错的。您可能会在一年的第一周和最后一周出现意外行为, -
完成了,这对您有什么启示吗?
-
不,我的错,我的意思是
print(Data(bytes) as NSData)
标签: ios arrays swift nsdateformatter