Ios Xcode编译器错误:";找不到类型';队列';“范围内”;而在swift中删除GPX文件
我会遵循这一点,但当我在我这边实现时,它发生了错误。基本上,我想在我的项目中解析GPX文件。请指导我解决这个问题Ios Xcode编译器错误:";找不到类型';队列';“范围内”;而在swift中删除GPX文件,ios,swift,xcode,gpx,Ios,Swift,Xcode,Gpx,我会遵循这一点,但当我在我这边实现时,它发生了错误。基本上,我想在我的项目中解析GPX文件。请指导我解决这个问题 protocol GpxParsing: NSObjectProtocol { func parser(_ parser: GpxParser, didCompleteParsing locations: Queue<CLLocation>) } class GpxParser: NSObject, XMLParserDelegate { private
protocol GpxParsing: NSObjectProtocol {
func parser(_ parser: GpxParser, didCompleteParsing locations: Queue<CLLocation>)
}
class GpxParser: NSObject, XMLParserDelegate {
private var locations: Queue<CLLocation>
weak var delegate: GpxParsing?
private var parser: XMLParser?
init(forResource file: String, ofType typeName: String) {
self.locations = Queue<CLLocation>()
super.init()
if let content = try? String(contentsOfFile: Bundle.main.path(forResource: file, ofType: typeName)!) {
let data = content.data(using: .utf8)
parser = XMLParser.init(data: data!)
parser?.delegate = self
}
}
func parse() {
self.parser?.parse()
}
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
switch elementName {
case "trkpt":
if let latString = attributeDict["lat"],
let lat = Double.init(latString),
let lonString = attributeDict["lon"],
let lon = Double.init(lonString) {
locations.enqueue(CLLocation(latitude: lat, longitude: lon))
}
default: break
}
}
func parserDidEndDocument(_ parser: XMLParser) {
delegate?.parser(self, didCompleteParsing: locations)
}
}
协议GpxParsing:NSObjectProtocol{
func解析器(解析器:GpxParser,didCompleteParsing位置:Queue)
}
类GpxParser:NSObject,XMLParserDelegate{
专用变量位置:队列
弱变量委托:GpxParsing?
私有var解析器:XMLParser?
init(forResource文件:String,of type typeName:String){
self.locations=队列()
super.init()
如果let content=try?字符串(contentsOfFile:Bundle.main.path(forResource:file,of type:typeName)!){
让data=content.data(使用:.utf8)
parser=XMLParser.init(数据:data!)
解析器?.delegate=self
}
}
func parse(){
self.parser?.parse()
}
func解析器(parser:XMLParser,DidStartElementName:String,namespaceURI:String?,qualifiedName qName:String?,attributes attributeDict:[String:String]=[:])){
开关元件名称{
案例“trkpt”:
如果let latString=attributeDict[“lat”],
设lat=Double.init(latString),
设lonString=attributeDict[“lon”],
设lon=Double.init(lonString){
位置。排队(CLLocation(纬度:纬度,经度:经度))
}
默认值:中断
}
}
func parserDidEndDocument(parser:XMLParser){
委托?.parser(self,didCompleteParsing:位置)
}
}
这篇文章非常清楚地告诉您: 实现队列应该很简单(或者是一个很好的练习)
换句话说,作者没有包括队列的实现;相反,作者邀请你来写。正如作者所暗示的,这是一个让您了解什么是队列并编写其通用Swift实现的机会。没有队列类型,因为您没有按照本文作者的要求编写队列类型。如果你不愿意自己思考和编写代码,那么这篇文章对你来说不是一篇好文章。你可以通过谷歌搜索“Swift queue implementation”了解更多信息,