NBStateMachine 0.4

NBStateMachine 0.4

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最后发布2015年10月
SPM支持 SPM

Maintained by Noam bar-on.



NBStateMachine

用 Swift 编写的简单状态机

需求

  • iOS 9.0+
  • xCode 7+

示例应用

要运行示例项目,克隆仓库,然后运行

安装

NBStateMachine 可以通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile:

pod "NBStateMachine"

设置状态

//states
let stateLyingDown = State(name: "Lying Down")
let stateStanding = State(name: "Standing")
let stateSitting = State(name: "Sitting Down")
let stateRunning = State(name: "Running")

设置事件

//events
let eventSitDown = Event(eventName: "Sit Down", sourceStates: [stateStanding, stateLyingDown], destinationState: stateSitting)
eventSitDown.willFireEvent = { (event:Event) -> Bool in
print("I'm about to sit down")
return true
}
eventSitDown.didFireEvent = { (event:Event) -> Void in
print("I'm am siting down")
}



let eventStandUp = Event(eventName: "Stand Up", sourceStates: [stateSitting, stateRunning], destinationState: stateStanding)
eventStandUp.willFireEvent = { (event:Event) -> Bool in
print("I'm about to Stand")
return true
}
eventStandUp.didFireEvent = { (event:Event) -> Void in
print("I'm am Standing")
}


let eventStartRunning = Event(eventName: "Start Running", sourceStates: [stateStanding, stateRunning], destinationState: stateRunning)
eventStartRunning.willFireEvent = { (event:Event) -> Bool in
print("I'm about to Start running")
return true
}
eventStartRunning.didFireEvent = { (event:Event) -> Void in
print("I'm am Running")
}

启动 NBStateMachine

//initiate NBStateMachine
let machine = NBStateMachine(initialState: stateLyingDown)
machine.addStates([stateSitting, stateRunning, stateStanding])
machine.addEvents([eventSitDown, eventStandUp, eventStartRunning])

触发事件

//fire an event
let transition = machine.fireEvent(eventSitDown) //try also eventStandUp, eventStartRunning

审核过渡

print("transition from State:\(transition.sourceState.name)  to State:\(transition.destinationState.name) was successful :\(transition.successful) with error:\(transition.error?.description)")

合作

请随意就想法、问题或拉取请求进行合作。

作者

Noam Bar-on, https://www.linkedin.com/in/noambaron

许可

MIT 许可证 (MIT)

版权所有 © 2015 Noam Bar-on。

特此许可,免收费用,任何获得此软件及其相关文档文件(“软件”)副本的人(“任何人”),可以在不受任何限制的情况下处理软件,包括但不仅限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向获得软件的人提供如此软件以供其这样做,但受以下条件约束:

上述版权声明和本许可声明应包含在所有副本或软件的主要部分中。

本软件“按原样”提供,不提供任何形式的保证,无论明示或默示,包括但不限于适销性、特定目的适用性和非侵权性保证。在任何情况下,作者或著作权所有者不对任何索赔、损害或其他责任(无论基于合同、侵权或其他原因)承担任何责任,无论这些责任是从、因或与软件或其使用或其他方式产生。