I was looking for the same thing. I found this Github Gist by Nate Cook, which is an NSTimer extension that allows you to pass in a closure. The following code is copied from that Gist with the comments removed. See the link above for the full and/or updated version.
extension NSTimer {
    class func schedule(delay delay: NSTimeInterval, handler: NSTimer! -> Void) -> NSTimer {
        let fireDate = delay + CFAbsoluteTimeGetCurrent()
        let timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, fireDate, 0, 0, 0, handler)
        CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopCommonModes)
        return timer
    }
    class func schedule(repeatInterval interval: NSTimeInterval, handler: NSTimer! -> Void) -> NSTimer {
        let fireDate = interval + CFAbsoluteTimeGetCurrent()
        let timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, fireDate, interval, 0, 0, handler)
        CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopCommonModes)
        return timer
    }
}
The first function allows you to schedule a delayed event. The second allows you to schedule a repeated event.
Usage:
var count = 0
NSTimer.schedule(repeatInterval: 1) { timer in
    count += 1
    print(count)
    if count >= 10 {
        timer.invalidate()
    }
}
NSTimer.schedule(delay: 5) { timer in
    print("5 seconds")
}
(I modified the print(++count) line in the original since ++ is deprecated now.)