web-dev-qa-db-ja.com

Swift 3.0呼び出し結果は未使用

私はSwift 3.0で書いています

私は呼び出しの警告結果が未使用であることを私に与えるこのコードを持っています

        public override init(){
            super.init()
        }

        public init(annotations: [MKAnnotation]){
            super.init()
            addAnnotations(annotations:  annotations)

        }

        public func setAnnotations(annotations:[MKAnnotation]){
            tree = nil
            addAnnotations(annotations: annotations)
        }

        public func addAnnotations(annotations:[MKAnnotation]){
            if tree == nil {
                tree = AKQuadTree()
            }

            lock.lock()
            for annotation in annotations {
    // The warning occurs at this line
         tree!.insertAnnotation(annotation: annotation)
            }
            lock.unlock()
        }

私は他のクラスでこのメソッドを使用しようとしましたが、それは私にinsertAnnotationのコードが上にあるというエラーをまだ与えます

func insertAnnotation(annotation:MKAnnotation) -> Bool {
        return insertAnnotation(annotation: annotation, toNode:rootNode!)
    }

    func insertAnnotation(annotation:MKAnnotation, toNode node:AKQuadTreeNode) -> Bool {

        if !AKQuadTreeNode.AKBoundingBoxContainsCoordinate(box: node.boundingBox!, coordinate: annotation.coordinate) {
            return false
        }

        if node.count < nodeCapacity {
            node.annotations.append(annotation)
            node.count += 1
            return true
        }

        if node.isLeaf() {
            node.subdivide()
        }

        if insertAnnotation(annotation: annotation, toNode:node.northEast!) {
            return true
        }

        if insertAnnotation(annotation: annotation, toNode:node.northWest!) {
            return true
        }

        if insertAnnotation(annotation: annotation, toNode:node.southEast!) {
            return true
        }

        if insertAnnotation(annotation: annotation, toNode:node.southWest!) {
            return true
        }


        return false

    }

私は多くの方法を試してみましたが、ちょうどうまくいきませんが、Swift 2.2では、なぜこれが起こっているのかどんなアイデアでもうまくいきますか

135
Aryan Kashyap

あなたが呼び出している関数は値を返しますが、あなたは結果を無視しているので、あなたはこの問題を抱えています。

この問題を解決するには2つの方法があります。

  1. 関数呼び出しの前に_ =を追加して結果を無視します

  2. コンパイラを黙らせるために@discardableResultを関数の宣言に追加します

416
David Skrundz