CSVImporter https://github.com/Flinesoft/CSVImporterを使用していますので、.csvファイルからデータをインポートします。それは正常に動作しますが、viewDidLoad関数の他の部分が実行される前にインポートを開始します。CSVImporterはviewdidload後にインポートを開始します。[Swift]
次のコードは単なるテストですが、他のviewDidLoadコードが実行される前にCSVImporterがインポートを完了するようにするソリューションか、viewDidLoadの後で自動的に起動する関数が必要です。それは "Begin2" を印刷し、6回のプリントはnilだから、最初
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")
}
:
は、ここに私のコードです。次に、関数viewDidLoadが終了すると、 "Begin1"が出力され、次に正しい変数と "End1"が出力されます。
誰か助けてくれますか?おかげさまで
"CSVImporterはデフォルトで非同期で動作するため、メインスレッドをブロックしません。"あなたのlibに関するドキュメントを読んでください。メインスレッドをブロックしないでください。 'onFinish {}'クロージャで残りのメソッドを呼び出します。あるいは、 'Import Synchronously'の部分を読んでください。 – Larme
@Larme私はそれを同期させましたが、彼はそれにもかかわらず何も印刷しません。 – Blub