Skip to content

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.

1 participant