Xcode 编译器错误:“在范围内找不到类型‘队列’”,而在 swift 中压缩 GPX 文件

问题描述

Xcode Compiler Erro

我遵循此 article 但当我在我这边实施时出现错误。基本上,我想在我的项目中解析 GPX 文件。请指导我解决这个问题。

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)
    }
}

解决方法

文章很清楚地告诉你:

实现队列应该是微不足道的(或者是一个很好的练习)。

也就是说,作者没有包含Queue的实现;相反,作者邀请来写它。正如作者所暗示的那样,这是一个让您了解 Queue 是什么并编写它的通用 Swift 实现的机会。没有队列类型,因为你没有写,因为文章的作者邀请你这样做。如果您不愿意自己进行一些思考和编码,这不是一篇适合您复制的好文章。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...