web-dev-qa-db-fra.com

Swift 3.0 Résultat de l'appel inutilisé

J'écris dans Swift 3.0

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 il 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??

140
Aryan Kashyap

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 _ = devant l'appel de fonction

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

426
David Skrundz