Skip to content

Logicalshift/SwiftRebound

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

SwiftRebound is a library for binding Swift programs together.

SwiftRebound

Basic usage

Create a bound variable

let binding = Binding.create(1);

Observe it for changes

binding.observe { newValue in print(newValue); }.forever();
binding.value = 3; /// prints '3'

Derive a computed binding

let computed = Binding.computed { binding.value + 1 };
computed.observe { newValue in print(newValue); }.forever();
binding.value = 5; /// prints '6' (well, and '5' with the above binding ;-)

Manage binding lifetimes

let lifetime = binding.observe { newValue in print(newValue); };
binding.value = 1; /// prints
lifetime.done();
binding.value = 2; /// observer no longer runs
let lifetime = binding.observe { newValue in print(newValue); };
lifetime.forever();
binding.value = 1; /// prints
binding.value = 2; /// observe lasts as long as binding
var someView: NSView = view;
let lifetime = binding.observe { newValue in print(newValue); };
lifetime.liveAsLongAs(someView); /// binding will go away when the view goes away

Do Key-Value observation

class ObservableObject : NSObject {
    dynamic var foo = 0;
}

let kvo = ObservableObject();
let bound = kvo.bindKeyPath("foo");
let value = bound.value as! Int;    /// == 0

let lifetime = bound.observe { newValue in print(newValue); }
kvo.foo = 1;        /// Prints '1'
lifetime.done();    /// Must stop observing KVO bindings to allow the target object to be released

About

Binding library for swift

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published