【发布时间】:2017-08-09 05:03:59
【问题描述】:
我想从 .csv 文件导入数据,所以我使用了 CSVImporter https://github.com/Flinesoft/CSVImporter。它运行良好,但它在函数 viewDidLoad 的其他部分执行之前开始导入。
以下代码只是一个测试,但我需要一个解决方案来确保 CSVImporter 在其他 viewDidLoad 代码执行之前完成导入,或者一个在 viewDidLoad 之后自动启动的函数。
这是我的代码:
var Vokabeln: [[String]]?
var i = 0
override func viewDidLoad() {
super.viewDidLoad()
let path = "/Users/---CENSORED---/Documents/TestLöschen/TestLöschen/Vokabeln.csv"
let importer = CSVImporter<[String]>(path: path, delimiter: ";")
importer.startImportingRecords { $0 }.onFinish { importedRecords in
for record in importedRecords {
self.Vokabeln?[self.i][0] = record[0]
self.Vokabeln?[self.i][1] = record[1]
self.Vokabeln?[self.i][2] = record[2]
print("Begin1")
print(record[0])
print(record[1])
print(record[2])
print("End1")
self.i += 1
}
}
print("Begin2")
print(Vokabeln?[0][0])
print(Vokabeln?[0][1])
print(Vokabeln?[0][2])
print(Vokabeln?[1][0])
print(Vokabeln?[1][1])
print(Vokabeln?[1][2])
print("End2")
}
所以首先它打印“Begin2”,然后 6 次打印 nil。然后,当函数 viewDidLoad 完成时,它会打印“Begin1”,然后是正确的变量和“End1”
有人可以帮我吗? 谢谢。
【问题讨论】:
-
"CSVImporter 默认异步工作,因此不会阻塞主线程。"阅读有关您的库的文档。不要阻塞主线程。在
onFinish{}闭包上调用其余方法。或阅读部分Import Synchronously -
@Larme 我已经同步了,但他仍然打印 nil。
标签: swift csv csv-import