我正在尝试将3万个用户的详细信息存储到核心数据中。为此,我进行了搜索,并提出了一种解决方案,将所有数据保存为CSV格式的文件。 我可以使用以下代码下载和读取CSV文件:
func readCsvFile () {
if let path = Bundle.main.path(forResource: "users", ofType: "csv") {
if FileManager.default.fileExists(atPath: path){
if let fileHandler = FileHandle(forReadingAtPath: path){
if let data = fileHandler.readDataToEndOfFile() as? Data{
if let dataStr = String(data: data, encoding: .utf8){
print(dataStr)
}
}
}
}
}
}
但是现在的问题是,当我从文件中读取整个数据时,它会导致内存问题。我需要阅读一些内容并处理核心数据存储。再次返回并继续从我离开的地方继续读取数据。 我的文件包含以下数据:
Firstname,Lastname,Email,Phone,Title
Tanja,van Vlissingen-ten Brink,1,,Vulr(st)er
Berdien,Huismn Noornnen,2,,Filanager
Ailma,Ankit,3,,Vulr(st)er
Rzita,Salmani Samani,4,,Vulr(st)er
DeEora,Levaart,5,,Eerste Vulr(st)er
Kirsten,Veroor,6,,Vulr(st)er
Tristan,Haenbol,7,,Vulr(st)er
Manon,Bland,8,,Aankomend Vulrer
Naomi,Ruman,9,,Aankomend Vulrer
所以我发现使用NSFileHandler可以将文件光标移动或查找到文件中的特定位置,但是它需要偏移量:
fileHandler = FileHandle(forReadingAtPath: path)
fileHandler.seek(toFileOffset: 10)
但是我不知道如何识别我已经阅读了特定数量的行,现在返回到下一组行。 另外,NSStream是读取文件的方式,但我没有对此进行探讨。