148 votes

Swift 3.0 Résultat de l'appel non utilisé

J'écris en 3.0 rapide

j'ai ce code qui me donne le résultat d'avertissement d'appel est utilisé

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

J'ai essayé d'utiliser cette méthode dans d'autres classes mais cela me donne toujours l'erreur le code pour insertAnnotation est au dessus

 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

    }
 

J'ai essayé de nombreuses méthodes, mais cela ne fonctionne tout simplement pas, mais dans swift 2.2, cela fonctionne très bien, pourquoi cela se produit-il?

452voto

NSArray Points 1356

Vous rencontrez ce problème car la fonction que vous appelez renvoie une valeur mais vous ignorez le résultat.

Il y a deux façons de résoudre ce problème:

  1. Ignorer le résultat en ajoutant _ = avant l'appel de fonction

  2. Ajoutez @discardableResult à la déclaration de la fonction pour faire taire le compilateur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X