FROM : Hans van der Meer
DATE : Mon Feb 18 21:18:01 2008
On 18 feb 2008, at 11:35, Mike Abdullah wrote:
> There is nothing technically wrong with doing this, but if you do so
> every time the array is modified, your code will get rather messy
> and quickly. Instead, just implement the standard array accessor
> methods in your model:
>
> -insertObject:in<Key>AtIndex: and -removeObjectFrom<Key>AtIndex:
>
> As a result KVO notifications will be sent automatically, the
> notifications will be better tuned to the actual changes, and you'll
> end up with less code.
I did so but somehow implementing these this does NOT work for me!
Here is my code: -insertObject:in<Key>AtIndex: is in my class and is
called inside a loop where successive solution objects are inserted in
the solutions array. Is there something else I am missing?
- (void) insertObject:(id)anObject inSolutionsAtIndex:
(NSUInteger)anIndex; {
[solutions addObject:anObject];
}
... <loop inserts solution objects>
[self insertObject:solution inSolutionsAtIndex:0];
// the tableview does not update.
Besides, iff it worked there would be a kvo notification with every
inserts, whereas I understand that bracketing will result in one
notification only; please correct me if I am wrong here.
> On 18 Feb 2008, at 09:26, Hans van der Meer wrote
>> On 17 feb 2008, at 03:25, mmalc crawford wrote:
>>>
>>> On Feb 16, 2008, at 9:34 AM, Hans van der Meer wrote:
>>>
>>>> It might be of use to remember that changes within an
>>>> NSMutableArray (addObject, remove...) do not by themselves lead
>>>> tot calling the class's observers. I found it useful to bracket
>>>> the changes in this manner:
>>>> [self willChangeValueForKey:@"theArray"];
>>>> // changes to the contents of the array
>>>> [self didChangeValueForKey:@"theArray"];
>>>>
>>> Don't do this.
>>> RTFineM.
>>
>> Please forgive me my ignorance. But I do not understand why the
>> change bracketing should not be done. I have struggled a lot with
>> updating a NSMutableArray bound in IB to an NSArrayController. It
>> was (at least for me) impossible to get changes like addObject to
>> be reflected in the coupled tableview UNLESS I bracketed the
>> changes in the manner indicated above.
>>
>> I would gladly learn where I am erring. So please could you
>> elaborate on this statement and indicate how then the coupling
>> array-IBbinding-tableview can be effected.
Hans van der Meer
DATE : Mon Feb 18 21:18:01 2008
On 18 feb 2008, at 11:35, Mike Abdullah wrote:
> There is nothing technically wrong with doing this, but if you do so
> every time the array is modified, your code will get rather messy
> and quickly. Instead, just implement the standard array accessor
> methods in your model:
>
> -insertObject:in<Key>AtIndex: and -removeObjectFrom<Key>AtIndex:
>
> As a result KVO notifications will be sent automatically, the
> notifications will be better tuned to the actual changes, and you'll
> end up with less code.
I did so but somehow implementing these this does NOT work for me!
Here is my code: -insertObject:in<Key>AtIndex: is in my class and is
called inside a loop where successive solution objects are inserted in
the solutions array. Is there something else I am missing?
- (void) insertObject:(id)anObject inSolutionsAtIndex:
(NSUInteger)anIndex; {
[solutions addObject:anObject];
}
... <loop inserts solution objects>
[self insertObject:solution inSolutionsAtIndex:0];
// the tableview does not update.
Besides, iff it worked there would be a kvo notification with every
inserts, whereas I understand that bracketing will result in one
notification only; please correct me if I am wrong here.
> On 18 Feb 2008, at 09:26, Hans van der Meer wrote
>> On 17 feb 2008, at 03:25, mmalc crawford wrote:
>>>
>>> On Feb 16, 2008, at 9:34 AM, Hans van der Meer wrote:
>>>
>>>> It might be of use to remember that changes within an
>>>> NSMutableArray (addObject, remove...) do not by themselves lead
>>>> tot calling the class's observers. I found it useful to bracket
>>>> the changes in this manner:
>>>> [self willChangeValueForKey:@"theArray"];
>>>> // changes to the contents of the array
>>>> [self didChangeValueForKey:@"theArray"];
>>>>
>>> Don't do this.
>>> RTFineM.
>>
>> Please forgive me my ignorance. But I do not understand why the
>> change bracketing should not be done. I have struggled a lot with
>> updating a NSMutableArray bound in IB to an NSArrayController. It
>> was (at least for me) impossible to get changes like addObject to
>> be reflected in the coupled tableview UNLESS I bracketed the
>> changes in the manner indicated above.
>>
>> I would gladly learn where I am erring. So please could you
>> elaborate on this statement and indicate how then the coupling
>> array-IBbinding-tableview can be effected.
Hans van der Meer
| Related mails | Author | Date |
|---|---|---|
| Davide Scheriani | Feb 11, 14:28 | |
| Mike Abdullah | Feb 11, 14:59 | |
| Davide Scheriani | Feb 11, 16:51 | |
| Mike Abdullah | Feb 16, 16:14 | |
| Hans van der Meer | Feb 16, 18:34 | |
| mmalc crawford | Feb 17, 03:25 | |
| Hans van der Meer | Feb 18, 10:26 | |
| Mike Abdullah | Feb 18, 11:35 | |
| Davide Scheriani | Feb 18, 12:01 | |
| Hans van der Meer | Feb 18, 21:18 | |
| mmalc crawford | Feb 18, 21:24 | |
| mmalc crawford | Feb 18, 21:28 |






Cocoa mail archive

