Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Ecno is a task state manager built on top of UserDefaults in pure Swift 4.

License

NotificationsYou must be signed in to change notification settings

xmartlabs/Ecno

Repository files navigation

Build statusPlatform iOSSwift 5 compatibleCarthage compatibleCocoaPods compatibleLicense: MIT

ByXmartlabs SRL.

Introduction

Ecno was inspired byOnce Android library. It's a task state manager built on top of UserDefaults in pure Swift 4. This abstraction allows you to mark 'tasks' as done, 'to-do' and check for those states.

Ecno is ideal for:

  • Show tutorials once within the application.
  • Perform certain task periodically.
  • Trigger a task based on a user action.

Usage

First you need to initialize it:

Ecno.initialize()

Note: you should initialize it when your app gets launched.

Then, you can check whether a task was done by:

if !Ecno.beenDone("task"){  //...Ecno.markDone("task")}

Also, you can check for specific requirements about a certain task:

ifEcno.beenDone("task", scope:.appSession, numberOfTimes:.moreThan(3)){  // do stuff}

or

ifEcno.beenDone("task", scope:.since(20.minutes), numberOfTimes:.lessThan(3)){  // do stuff}

Additionally, you can program a 'to do' task by:

Ecno.toDo("show banner", scope:.until(3.hours), info:["name":"bannerName"])

and then query if you need to do that task:

ifEcno.needToDo("show banner"){letinfo=Ecno.infoForToDo("show banner") // ["name": "bannerName"]  // ...}

Task

Any type conforming to theTask protocol. Since it would be the most common case, theString type already conforms toTask.

publicprotocolTask{vartag:String{get}}

Scope

Scopes represents periods of time within the application.

  • .appInstall
    This period represents all times for the application.
  • .appVersion
    Period starting when the current version of the app was installed.
  • .appSession
    Period starting when the application was launched.
  • .since(TimeInterval)
    Period starting sinceTimeInterval time ago from now. For instance,.since(2.days)
  • .until(TimeInterval)
    Period valid untilTimeInterval from now. For instance,.until(3.hours). This should be useful to set a 'to do' task that expires.

Functions

  • func toDo(_ task: Task, scope: Scope? = nil, info: [AnyHashable: Any]? = nil)
    Marks a task as 'to do' within a given scope, if it has already been marked as to do or been done within that scope then it will not be marked. If the scope is nil, then it will be marked as to do anyways.
  • func needToDo(_ task: Task) -> Bool
    Checks if a task is currently marked as 'to do'.
  • func infoForToDo(_ task: Task) -> [AnyHashable: Any]?
    Gets the info associated with a 'to do' task. (only if you provided it in thetoDo(...) function)
  • func lastDone(_ task: Task) -> Date?
    Last done timestamp for a given task.
  • func beenDone(_ task: Task, scope: Scope = .appInstall, numberOfTimes: CountChecker = .moreThan(0)) -> Bool
    Checks if a task has been done with the given requirements.
  • func markDone(_ task: Task)
    Marks a task as done.

Requirements

  • iOS 8.0+
  • Swift 4.0+
  • Xcode 9.0+

Getting involved

  • If youwant to contribute please feel free tosubmit pull requests.
  • If youhave a feature request pleaseopen an issue.
  • If youfound a bug orneed help pleasecheck older issues

Before contribute check theCONTRIBUTING file for more info.

If you useEcno in your app We would love to hear about it! Drop us a line ontwitter.

Examples

Follow these 3 steps to run Example project:

  • Clone Ecno repository
  • Open Ecno workspace and run theExample project.

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects.

To install Ecno, simply add the following line to your Podfile:

pod'Ecno','~> 3.0'

Carthage

Carthage is a simple, decentralized dependency manager for Cocoa.

To install Ecno, simply add the following line to your Cartfile:

github "xmartlabs/Ecno" ~> 3.0

Author

Change Log

This can be found in theCHANGELOG.md file.


[8]ページ先頭

©2009-2025 Movatter.jp