Skip to content

Add DynamicArray feature.#23

Merged
inamiy merged 1 commit intomasterfrom
feature/DynamicArray
Mar 21, 2015
Merged

Add DynamicArray feature.#23
inamiy merged 1 commit intomasterfrom
feature/DynamicArray

Conversation

@inamiy
Copy link
Copy Markdown
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
Copy Markdown
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