以下代码创建文件并将数据放入其中,但将其保存为以下内容:
Creating 10e6 element List and CArray |
Substracting two 10e6 element Lists w/ hyper -
List hyper subtraction took: 26.1877042 seconds
Substracting two 10e6 element Lists w/ for loop -
List for loop subtraction took: 20.6394032 seconds
Substracting two 10e6 element CArrays w/ .list and hyper /
CArray .list and hyper subtraction took: 164.4888844 seconds
Substracting two 10e6 element CArrays w/ for loop |
CArray for loop subtraction took: 133.00560218 seconds
如何为每个段落获取新的["123", "456", "", "789"]
?想法是根据歌词的开始和结束位置将歌曲歌词保存到文件中。我是新手,所以可能会有更好的方法
item
我希望输出是
@IBOutlet weak var songName: UITextField!
@IBOutlet weak var newLyrics: UITextView!
@IBAction func saveSong(_ sender: Any) {
let sName = songName.text!
let fileManager = FileManager.default
let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let path = documentDirectory.appending("/Lyrics/\(sName).plist")
let lyrics = newLyrics.text.components(separatedBy: "\n\n")
print(lyrics)
if let tDocumentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
let filePath = tDocumentDirectory.appendingPathComponent("Lyrics")
if !fileManager.fileExists(atPath: filePath.path) {
do {
try fileManager.createDirectory(atPath: filePath.path, withIntermediateDirectories: true, attributes: nil)
} catch {
NSLog("Couldn't create document directory")
}
}
NSLog("Document directory is \(filePath)")
}
if(!fileManager.fileExists(atPath: path)){
print(path)
var lyricArray = [String]()
lyricArray.append("\(lyrics)")
// any other key values
let lyricData = NSArray(array: lyricArray)
let answer = lyricData.write(toFile: path, atomically: true)
print("File Created? \(answer)")
} else {
print("File Exists")
}
实际输出为
Item0 "123"
Item1 "456"
答案 0 :(得分:0)
您要使用字符串插值(lyricArray
)将数组的说明附加到\(...)
。
数组的描述是一个文字字符串,格式为"[\"item1\", \"item2\"]"
。
您必须附加数组的 contents
替换
lyricArray.append("\(lyrics)")
与
lyricArray.append(contentsOf: lyrics)
或完全删除lyricArray
并简单地写
let lyricData = NSArray(array: lyrics)
或–强烈建议–
do {
let lyricData = try PropertyListSerialization.data(fromPropertyList: lyrics, format: .xml, options: 0)
} catch { print(error) }
注意:
NSArray
处理Swift中的属性列表。使用PropertyListSerialization
。catch
子句中打印无意义的文字字符串。打印Couldn't do that
。