Wie kann ich die debounce-Methode nennen?

Ich versuche, einen UISearchView zur Abfrage von google places. Damit Sie auf text ändern, fordert meine UISearchBar bin ich eine Anfrage an google stellen. Das problem ist, ich würde eher debounce dieser Aufruf nur auf Anfrage einmal pro 250 ms, um zu vermeiden, unnötigen Netzwerk-Verkehr. Ich möchte lieber nicht schreiben, diese Funktionalität selbst, aber ich werde, wenn ich muss.

Fand ich: https://gist.github.com/ShamylZakariya/54ee03228d955f458389 , aber ich bin mir nicht ganz sicher, wie es zu benutzen:

func debounce( delay:NSTimeInterval, #queue:dispatch_queue_t, action: (()->()) ) -> ()->() {

    var lastFireTime:dispatch_time_t = 0
    let dispatchDelay = Int64(delay * Double(NSEC_PER_SEC))

    return {
        lastFireTime = dispatch_time(DISPATCH_TIME_NOW,0)
        dispatch_after(
            dispatch_time(
                DISPATCH_TIME_NOW,
                dispatchDelay
            ),
            queue) {
                let now = dispatch_time(DISPATCH_TIME_NOW,0)
                let when = dispatch_time(lastFireTime, dispatchDelay)
                if now >= when {
                    action()
                }
            }
    }
}

Hier ist eine Sache, die ich habe versucht, mit dem obigen code:

let searchDebounceInterval: NSTimeInterval = NSTimeInterval(0.25)

func findPlaces() {
    //...
}

func searchBar(searchBar: UISearchBar!, textDidChange searchText: String!) {
    debounce(
        searchDebounceInterval,
        dispatch_get_main_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT),
        self.findPlaces
    )
}

Der resultierende Fehler ist Cannot invoke function with an argument list of type '(NSTimeInterval, $T5, () -> ())

Wie kann ich diese Methode verwenden, oder gibt es eine bessere Möglichkeit, dies zu tun in iOS/Swift.

  • Sie haben sogar versucht, auf der verlinkten Bibliothek?
  • ich bin mir nicht sicher, was das ist, ich bin ziemlich neu auf nativen iOS-land.
  • Was, was ist? Sie über einen Link zu einem github-Seite. Ich wollte ihn nicht sehen. Haben Sie versucht, mit dem, was verfügbar ist es? Warum ist es verbunden?
  • oops falsch verstanden. Ich war nicht ganz sicher, was das 2. argument der Funktion ist, oder wie Sie es verwenden. Blick durch code es scheint Sinn zu machen. Ich habe versucht, einige Varianten ohne Erfolg.
  • Sollten Sie veröffentlichen, was Sie versucht haben, von diesem code dann. Du bist wahrscheinlich in der Nähe.
  • aktualisiert...
  • Aber schauen Sie sich einfach bei der Erklärung: func debounce( delay:NSTimeInterval, #queue:dispatch_queue_t, action: (()->()) ) - diese Parameter haben einen Namen. Sie müssen verwenden Sie es, wenn Sie es nennen.
  • Auch gibt es eine Funktion, die Sie sind nicht zu erfassen. Das ist nicht ein Fehler, aber sonst ist Ihr Ruf ist sinnlos, wird es nicht?
  • Auch dispatch_get_main_queue braucht keine parameter. Es wird einfach die Haupt-queue.
  • warum nach unten Stimmen?
  • Nur für den Fall jemand nicht weiß, was die # in der parameter Liste: stackoverflow.com/questions/24382118/...

InformationsquelleAutor Parris | 2014-11-25
Schreibe einen Kommentar