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 он отлично работает, если есть какие-то идеи, почему это происходит?

Ответ 1

Вы получаете эту проблему, потому что вызываемая вами функция возвращает значение, но вы игнорируете результат.

Есть два способа решить эту проблему:

  • Игнорировать результат, добавив _ = перед вызовом функции

  • Добавьте @discardableResult к объявлению функции, чтобы отключить компилятор