将字符串转换为Swift 3中的整型数组?
问题描述:
我想在文件中编写一个数组的数组。读完后,结果是一个字符串,我想知道如何读取一个数组数组或将字符串转换为数组数组?将字符串转换为Swift 3中的整型数组?
let file = "sample.txt"
var arr1 = [Int]()
arr1 += 1...100
var text = String(describing: arr1)
var text1 : String = String()
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
let path = dir.appendingPathComponent(file)
// writing
do {
try text.write(to: path, atomically: false, encoding: String.Encoding.utf8)
}
catch {/* error handling here */}
//reading
do {
text1 = try String(contentsOf: path, encoding: String.Encoding.utf8)
}
catch {/* error handling here */}
}
现在的问题是如何将text1
转换为数组数组?
答
的问题是:如果你想保存的Int
数组为什么写和读String
?
保存Int
数组最简单的方法是属性列表格式。
虽然在夫特的推荐的方法是PropertyListSerialization
类这种写和由桥接夫特Array
到NSArray
读取Int
阵列。
let file = "sample.plist"
let arrayToWrite = [Int](1...100)
var arrayToRead = [Int]()
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
let url = dir.appendingPathComponent(file)
// writing
(arrayToWrite as NSArray).write(to: url, atomically: false)
//reading
arrayToRead = NSArray(contentsOf: url) as! [Int]
print(arrayToRead)
}
使用PropertyListSerialization
的swiftier方式是
// writing
do {
let data = try PropertyListSerialization.data(fromPropertyList: arrayToWrite, format: .binary, options: 0)
try data.write(to: url, options: .atomic)
}
catch { print(error) }
//reading
do {
let data = try Data(contentsOf: url)
arrayToRead = try PropertyListSerialization.propertyList(from: data, format: nil) as! [Int]
print(arrayToRead)
}
catch { print(error) }
+0
真棒它的工作原理! – Mohammad
+0
可能是JSONSerialization是另一种可能性,如何轻松做到“正确的方式”。 – user3441734
你的意思是一个字符串转换为整数数组?尝试分割到字符串列表,然后将每个数组项目转换为int(谷歌它) –