Я пишу в 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 работает отлично любые идеи, почему это происходит??
Вы получаете эту проблему, потому что функция вызова возвращает значение, но вы не обращая внимания на результат.
Есть два способа решить эту проблему:
Игнорировать результат путем добавления _ =
перед вызовом функции
Добавить @discardableResult
к декларации функции, чтобы заставить замолчать компилятор