Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add DynamicArray feature. #23

Merged
merged 1 commit into from
Mar 21, 2015
Merged

Add DynamicArray feature. #23

merged 1 commit into from
Mar 21, 2015

Conversation

inamiy
Copy link
Member

@inamiy inamiy commented Mar 21, 2015

This pull request will add DynamicArray and ForwardingDynamicArray classes
which uses KVC's mutableArrayValueForKey() magic to interact with existing NSArray models.

Example

DynamicArray

let dynamicArray = DynamicArray()

// REACT
dynamicArray.signal ~> { changedValues, change, indexSet in
    println(change)
}

// add object to proxy (NSMutableArray)
dynamicArray.proxy.addObject(123)

// `change = .Insertion` will be printed

ForwardingDynamicArray

let model = MyModel(array: [1])

// pass NSMutableArray so that `ForwardingDynamicArray` can tweak it
let dynamicArray = ForwardingDynamicArray(model.mutableArrayValueForKey("array"))

// REACT
dynamicArray.signal ~> { changedValues, change, indexSet in
    println(change)
}

// add object to proxy (NSMutableArray)
dynamicArray.proxy.addObject(2)

// `change = .Insertion` will be printed & `model.array` will be updated as `[1, 2]`

For XCTest, please see ArrayKVOTests.swift#L224-L369.

For UI example, please see ReactKit/ReactKitCatalog#6.

inamiy added a commit that referenced this pull request Mar 21, 2015
@inamiy inamiy merged commit 411b8f8 into master Mar 21, 2015
@inamiy inamiy deleted the feature/DynamicArray branch March 21, 2015 17:01
@inamiy
Copy link
Member Author

inamiy commented Mar 22, 2015

TODO: needs fix

  • Create a new signal for each dynamicArray.signal call rather than reusing it
  • Fix retain cycle: ForwardingDynamicArray -> forwardingSignal -> KVOProxy -> ForwardingDynamicArray (boldface must be avoided)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant