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

我已经尝试在另一个类中使用这个方法,但它仍然给我出现了上面插入注释的代码的错误


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
}

我已经尝试了很多方法,但就是不工作,但在迅速2.2它的工作很好任何想法为什么会发生这种情况?

97640 次浏览

您之所以会遇到这个问题,是因为您正在调用的函数返回一个值,但是您忽略了结果。

有两种方法可以解决这个问题:

  1. 忽略结果,在函数调用前面添加 _ =

  2. @discardableResult添加到函数的声明中以使编译器静默