这就是我现在所拥有的:
每个文件约250MB
if let path = Bundle.main.path(forResource: "file_1", ofType: "json") {
let url = URL(fileURLWithPath: path)
do {
let data = try Data(contentsOf: url, options: Data.ReadingOptions.mappedIfSafe)
do {
if let results = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as? Array<[AnyHashable: Any]> {
//do sth here with that
}
} catch {
print("error1: \(error)")
}
} catch {
print("error2: \(error)")
}
}
但我所拥有的只是一个错误:
来自调试器的消息:由于内存问题而终止
是否有可能在Swift中使用iphone解析4个json文件?我需要在几秒钟内解析它。
答案 0 :(得分:1)
这一行
let data = try Data(contentsOf: url, options: Data.ReadingOptions.mappedIfSafe)
使用大约250MB的内存。对于应用来说,这是一个巨大的数额。特别是如果你加载4个文件。您的内存使用量约为1GB。所以用两个词来说 - 这是不可能的。您需要找到更好的问题解决方案。
答案 1 :(得分:1)
答案 2 :(得分:0)
Swift 5.1 将以下代码用于巨大的JSON 文件。它对我有用。
func readJSONFromFile(fileName: String) -> Any?
{
var json: Any?
if let path = Bundle.main.path(forResource: fileName, ofType: "json") {
do {
let fileUrl = URL(fileURLWithPath: path)
// Getting data from JSON file using the file URL
let data = try Data(contentsOf: fileUrl, options: .mappedIfSafe)
json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments)
print(json)
} catch {
// Handle error here
}
}
return json
}