2013-08-05 28 views
5
property KVO ile izliyorum. this post'da olduğu gibi KVC uyguladım ve ayrıca KVC dizi erişim sağlayıcılarının çoğunu uyguladık. Değiştirmek için mutableArrayValueForKey kullanıyorum. Tesiste 2 konulara dışında çalışıyor:
  1. ben removeAllObjects diyoruzKVO on removeAllObjects Her Öğe için NSKeyValueChangeRemovalı Ayrı Ayrı

    , ben her bir silinen öğenin için NSKeyValueChangeRemoval değişiklik olsun. Kaldırılan tüm dizinler için yalnızca bir NSKeyValueChangeRemoval bildirimi almak istiyorum.

  2. Benzer şekilde, addObjectsFromArray: numaralı telefonu aradığımda, her bir eklenen öğe için NSKeyValueChangeInsertion alırım. Eklenen tüm dizinler için yalnızca bir NSKeyValueChangeInsertion bildirimi almak istiyorum. Ben yapmak


Bildirim KVC yöntemleri remove<Key>ItemsAtIndexes: ve insert<Key>Items:atIndexes: uygulamıştır. Ancak bunlar, değil değil.

- (void)removeAllObjectsWorkaroundFromArray:(NSMutableArray *)modelArray { 
    NSRange indexRange; 
    indexRange.length = modelArray.count; 
    indexRange.location = 0; 
    NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:indexRange]; 
    [modelArray removeObjectsAtIndexes:indexSet]; 
} 

- (void)addObjectsFromArrayWorkaroundWithArray:(NSMutableArray *)modelArray arrayToAdd:(NSArray *)arrayToAdd { 
    NSRange indexRange; 
    indexRange.length = arrayToAdd.count; 
    indexRange.location = modelArray.count; 
    NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:indexRange]; 
    [modelArray insertObjects:arrayToAdd atIndexes:indexSet]; 
} 

doğrudan yukarıdaki geçici çözümler için gerek kalmadan removeAllObjects ve addObjectsFromArray: kullanmak için bir yolu var mı: Ben şu geçici çözümleri kullanmak

?

+0

Son satır kodunda yazım hatası var mı? – Mundi

+0

Yepp, teşekkürler. Düzeltildi. – fabb

cevap

0

Bildiğiniz gibi, dizinin kendisini değil, yalnızca özniteliğini gözlemleyebildiğini biliyorsunuzdur. Bu yüzden, çözümünüzün kaçınılmaz olduğunu düşünüyorum.

Bu söyleniyor - Bunu çözdüğünüzü gerçekten çok seviyorum!

+0

Neden bunun kaçınılmaz olduğunu düşündüğünüz hakkında biraz daha ayrıntılı bilgi verebilir misiniz? Sorunun, birer birer öğe ekleyen/çıkan 'removeAllObjects' ve' addObjectsFromArray: 'yöntemlerinin uygulanmasından kaynaklandığını tahmin ediyorum. Soruyu sorduğumdan emin olmak için belki bir şey gözden kaçırdım. Geçici çözüm kaçınılmaz olduğunda, 'NSArray' üzerinde geçici yöntemler kategorisi yöntemleri yapardım. – fabb

+0

Dediğim gibi dizinin nesneleri, dizinin kendisi değil, gözlenir. Bu kaçınılmaz açıklar. Kategori gitmek için iyi bir yol gibi görünüyor. – Mundi

İlgili konular