2009-07-16 17 views
17

Objective C'de iki dizim var ve bir şeyin ne olduğunu bulmam gerekiyor, böylece aynı yere yerleştirebiliyorum. Örneğin, bir "isim dizisi" ve bir "yaş dizisi" olduğunu varsayalım. "İsim dizisinde" hangi "index" dizgesinin bulunduğunu nasıl öğrenirim?Objective C'de dizi dizini nasıl belirlenir?

Teşekkür

cevap

38

-[NSArray indexOfObject:] mantıklı bir seçim olacak gibi görünüyor.

+0

Evet, chuck yapardım, teşekkürler NSMutableArray sınıf başvurusunda bulamadım. – Xcoder

+4

Evet, NSMutableArray raporları yalnızca mutasyona uğramış dizilerle ilgili olan yöntemleri içerir. Süper sınıf belgelerini de kontrol etmek her zaman faydalıdır. – Chuck

+1

Dokümanlar, devralınan yöntemleri, ivarları ve özellikleri kontrol etmeyi kolaylaştırır. Kendinizi Andy Lee'nin AppKiDo uygulamasının bir kopyasını edinin ve neleri kaçırdığınızı görmek daha kolay olacaktır. Bazı sınıfları yeni bir ışıkta gördüğünüzde daha kolay anlaşılır. – uchuugaka

4

Dizeleri temel alan aramalar yapıyorsanız, bir NSDictionary kullanmak da isteyebilirsiniz.

+0

Bu harika bir nokta. İnsanlar çoğu zaman, belirli bir dizge için bir diziyi aramanın, doğrusal bir zaman alması gerçeği göz ardı edilir; Chuck, diziler için nasıl yapılacağı konusunda doğrudur, ancak seyrek açıklamalara dayanarak, bir sözlük büyük bir potansiyel çözüm gibi görünüyor. –

+2

Yine de, eğer sabit büyük veya çizgi kısasa, doğrusal sürenin sabit zamandan daha hızlı olabileceğini hatırlamaya değer. Temel olarak, bir performans sorunu olduğunu ölçerek onaylayana kadar endişelenmeyin. –

6

Kakaoda paralel diziler, doom ve yıkım yoludur. Bunları Bindings ile etkin bir şekilde kullanamazsınız, bu yüzden Bindings'in var olmadığı gibi çok fazla tutkal kodu yazmanız gerekir. Dahası, uygulamaya koymaya başlamadan önce sahip olabileceğiniz herhangi bir AppleScript/Scripting Bridge desteğini öldürüyorsunuz.

Doğru yol, name ve age özelliklerine sahip bir model sınıfı oluşturmak ve bu sınıfın tek bir örnek dizisine sahip olmaktır. Ardından, adı veya yaşı bir öğe bulmak için diziyi filtrelemek için NSPredicate ve ana dizideki filtrelenmiş dizideki her öğenin dizinini bulmak için indexOfObjectIdenticalTo: kullanın.

indexOfObject: ve indexOfObjectIdenticalTo: arasındaki fark, birincisinin ikincisinden yalnızca geçirilen belirli bir nesne arar oysa her nesne arıyor biri olup olmadığını belirlemek için isEqual: mesaj göndermek olacaktır. Böylece, indexOfObject: kullanabilirsiniz dizideki eşit olmayan nesneyi bulmak için dizide olmayan ancak eşit olan bir nesneye sahip.

İlgili konular