私は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では、なぜこれが起こっているのかどんなアイデアでもうまくいきますか
あなたが呼び出している関数は値を返しますが、あなたは結果を無視しているので、あなたはこの問題を抱えています。
この問題を解決するには2つの方法があります。
関数呼び出しの前に_ =
を追加して結果を無視します
コンパイラを黙らせるために@discardableResult
を関数の宣言に追加します