我是Swift的新手,正试图弄清楚如何将CSV文件导入数组。我好像不能让它工作。
import SwiftUI
func getCSVData() -> Array<String> {
do {
let url = URL(fileURLWithPath: "http://www.rupert.id.au/resources/4000-most-common-english-words-csv.csv")
let content = try String(contentsOf: url)
let parsedCSV: [String] = content.components(separatedBy: "\n").map{ $0.components(separatedBy: ",")[0] }
return parsedCSV
}
catch {
return [error.localizedDescription]
}
}
struct ContentView: View {
var words2 = getCSVData()
var body: some View {
VStack{
Text(words2[0])
}
}
}
1条答案
按热度按时间kqqjbcuj1#
您的代码有多个问题,例如:
Apple需要
https
连接。要使用http
,您需要在Info.plist
中设置“NSAppTransportSecurity”以允许http连接到服务器。也可以使用https://.....
您的
getCSVData()
应该是一个异步函数(查找它的含义)。所以你在var words2 = getCSVData()
中不会得到任何东西,因为你不能在你做的地方调用函数。声明
@State var words: [String] = []
,以便在数据到来时可以更改它,请参阅使用SwiftUI
和使用@State
的基础知识。要从服务器获取文件,请使用注解中提到的
URL(string: ...)
。注意,如果你只是使用这个,你会得到一个警告,.... Please switch to an asynchronous networking API such as URLSession
。有不同的方法可以避免这种情况,示例代码使用推荐的URLSession
。将所有这些放在一起,并遵循其他注解的建议,尝试以下示例代码: