我在Swift中使用iOS MapKit。我获得了路线方向的桌面视图。然后我将它们保存到文本文件(Roads.txt)中。一旦进入文本文件,我想除去道路名称之外的所有内容。这意味着我要删除像“North”,“Turn”,“Right”等字样。有没有办法在Swift中执行此操作,还是必须将文件保存到数据库并处理更改?
我的代码有效,如下:
// Assign variables
let steps = directionsArray[indexPath.section].route.steps
let step = steps[indexPath.row]
let instructions = step.instructions
let distance = step.distance.kilometers()
// Save Directions to text file
let directions = ["\(instructions) - \(distance),"]
let filePath = getDocumentsDirectory().stringByAppendingPathComponent("Roads.txt")
let directionstext = directions.joinWithSeparator("\n")
do {
try directionstext.writeToFile(filePath, atomically: true, encoding: NSUTF8StringEncoding)
} catch {
print ("Error it did not write to file")
}
//read directions from text file
let file = "Roads.txt" // read from this file
if let dir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first {
let path = NSURL(fileURLWithPath: dir).URLByAppendingPathComponent(file)
do {
let Direc = try NSString(contentsOfURL: path, encoding: NSUTF8StringEncoding)
print(Direc)
}
catch {print("failed to find file")}
}
答案 0 :(得分:0)
好的,根据以上信息,我认为有两条可能的路线(双关语)......
选项1:配置'后端'或者信息的来源,以便它将指令分两部分 - 方向和街道 - 这样您就可以丢弃在创建所需文件时不需要的位。这将是简单和整洁,但可能或可能不可能。
选项2:过滤文件以删除不需要的信息。 为了展示理论,我们假设只有两个可能的指令:"左转到"并且"右转进入"。然后,您可以使用以下代码从文件中删除所有指令:
let possibleInstructions = ["Turn left onto ", "Turn right onto "]
for instruction in possibleInstructions {
direc = direc.stringByReplacingOccurrencesOfString(instruction, withString: "")
}
其中direc
是您正在读取的文件,possibleInstructions
是该文件中可能出现的所有可能指令的数组。例如,这需要:
左转进入Infinite Loop - 0.00,右转进入N De Anza Blvd - 0.08,左转进入I-280 S - 0.12,右转进入CA-87 - 7.81,右转进入Guadalupe Parkway S - 0.25,左转进入CA-87 S - 0.85
并返回:
无限循环 - 0.00,N De Anza Blvd - 0.08,I-280 S - 0.12,CA-87 - 7.81,Guadalupe Parkway S - 0.25,到CA-87 S - 0.85
显然,可能的指令列表会比这长得多,你需要额外的代码来处理特殊情况,比如"把X出口合并到",但听起来可能是这样的这个过程的后期挑战。