Latest 1.0.1
Homepage https://github.com/Albinzr/SwiftyTask
License MIT
Platforms ios 10.0, requires ARC
Authors

An extreme queuing system with high performance for managing all task in app with closure

Task

Swift 3.0
Platforms iOS
Xcode 8.0
[Gemnasium]()
[Ratting]()
[license]()

Method Tasking of queued closure on GCD (Grand Central Dispatch).

Requirements

  • iOS 10.0+
  • Swift 4.1+
  • Xcode 9.2+

Installation

CocoaPods

Task is available through CocoaPods. To install
it, simply add the following line to your Podfile:

use_frameworks!

pod "SwiftyTask"

or

use_frameworks!

pod 'SwiftyTask', git: 'https://github.com/Albinzr/SwiftyTask', :tag => '1.0.1'

Carthage

To integrate Task into your Xcode project using Carthage, specify it in your Cartfile:

github "CR-Creations/SwiftyTask"

Example

Basics

SwiftyTask.main {

    // main thread queue

    return "1"
    }.background { result in

         // background qos class thread queue
         print(result) 

         return "2"
    }.userInteractive { result in

         // userInteractive qos class thread queue
         print(result) 

         return "3"
    }.userInitiated { result in
         //userInitiated qos class thread queue
         print(result) 

         return "4"
    }.onDefault { result in
         // default qos class thread queue

         print(result)
         return "5"
    }.run(.Main) { result in

         // called at main thread queue
         print(result) 
         print("Process completion")
}

Custom queue

let queue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)

SwiftyTask.custom(queue) {

    //customQueue

    return nil
    }.onDefault { result in

         //default qos class thread queue

         return result
    }.main { result in

         //main thread queue

         return result
    }.custom(customQueue) { result in

         // customQueue

         return result
    }.run()

After

SwiftyTask.main {

    // main thread queue

    print("start after: (Date().description)")

    return "1"
    }.after(seconds: 5) { result in

        // 5 seconds after the previous block
        //background qos class thread queue

        print(result)
        return "after 2: (Date().description)"
    }.userInteractive { result in

        //userInteractive qos class thread queue

        print(result)
        return "after 3: (Date().description)"
    }.after(Queue.Utility, seconds: 5) { result in

        //5 seconds after the previous block
        // called at utility qos class thread queue

        print(result) 
        return "after 4: (Date().description)"
    }.run(.Main) { result in

        // last call main thread queue

        print(result) 
        print("after completion: (Date().description)")
}

Wait

SwiftyTask.main {

    //  main thread queue

    print("start wait: (Date().description)")
    return "1"
    }.wait(seconds: 5).background { result in

        // 5 seconds after the previous block
        // background qos class thread queue

        print("wait 2: (Date().description)")
        return result
    }.wait(seconds: 5).main { result in

        // 5 seconds after the previous block
        // main thread queue

        print("wait 3: (Date().description)")
        return result
    }.run()

License

MIT license. See the LICENSE file for more info.

Latest podspec

{
    "name": "SwiftyTask",
    "version": "1.0.1",
    "summary": "An extream queuing system with high performance for managing all task in app with closure",
    "homepage": "https://github.com/Albinzr/SwiftyTask",
    "license": "MIT",
    "authors": {
        "Albin CR": "[email protected]"
    },
    "source": {
        "git": "https://github.com/Albinzr/SwiftyTask.git",
        "tag": "1.0.1"
    },
    "swift_version": "4.1",
    "requires_arc": true,
    "platforms": {
        "ios": "10.0"
    },
    "source_files": [
        "SwiftyTask",
        "SwiftyTask/**/*.swift"
    ]
}

Pin It on Pinterest

Share This