Data.txt包含以下内容: “猫” “狗” “鼠标”
我想用该文件中的字符串填充数组(dico [0] =“Cat”,dico [1] =“Dog”,aso)。
我发现了这个,How to call Objective-C's NSArray class method from within Swift?和Read and write data from text file,但是当我使用此代码时:
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("data", ofType: "txt")
let dico = NSArray(contentsOfFile: path)
println("\(dico[0])")
println("\(dico.count)")
我得到的只是“nil”和“0”。
我想我的文件中的数据不是按原样编写的,我使用的代码不对,但我无法理解为什么。
此外,当我使用此代码时,没关系:
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("data", ofType: "txt")
let dico = NSString(contentsOfFile: path)
println("\(dico)")
问题是我不希望dico成为一个字符串,我希望它是一个数组。
答案 0 :(得分:4)
这不是arrayWithContentsOfFile
的工作方式。
它希望将参数作为一个文件的路径,该文件包含writeToFile:atomically:
方法生成的数组的字符串表示形式。
出于您的目的,您可以使用第二种方法,并在字符串上调用componentsSeparatedByString()
。
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("data", ofType: "txt")
let dico = NSString(contentsOfFile: path).componentsSeparatedByString("\n")
答案 1 :(得分:1)
NSArray的arrayWithContentsOfFile:
初始化程序不适用于常规文本文件。它仅用于使用NSArray的writeToFile:atomically:
假设您要将文本文件中的单词拆分为数组并假设每个单词将用空格分隔,您可以执行以下操作:
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("data", ofType: "txt")
let dico = NSString(contentsOfFile: path)
let components = dico.componentsSeparatedByString(" ")
println("\(components)")
答案 2 :(得分:1)
您尝试阅读的文件必须使用writeToFile:atomically:
方法创建。这就是文档中所说的:
aPath - 包含数组表示的文件的路径 由writeToFile生成:atomically:方法。
因此,您必须使用上述方法创建文件或将其作为字符串读取,然后使用例如componentsSeparatedByString:
方法将其转换为数组。