2009-11-28 18 views
18

Bu aptalca bir soru gibi geliyor, ancak NSArray'da bir ipi nasıl bulabilirim? NSArray'da bir dize nasıl bulunur?

Ben

[array indexOfObjectIdenticalTo:myString] 

kullanarak çalıştı ama aynı adresi olması acı gerektirir.

Bunun nasıl yapılacağı konusunda herhangi bir ipucu var mı?

cevap

13

Peter'ın cevabı doğrudur.

Bir ek not; Dizide tonlarca ton varsa, -indexOfObject: doğrusal bir arama yapacak. Bu, farklı bir kap kullanmayı düşünmeniz gereken bir performans darboğazı olabilir; bir NSSet veya NSDictionary, muhtemelen (dizelerin ne anlama geldiğine bağlı olarak). Başka bir getsek, dizilerin hepsi nispeten benzer ve/veya nispeten uzunsa, bir başka yakalamadır.

Elbette, bir performans sorununa sahip olduğunuzu kanıtlamak için analiz araçlarını kullanana kadar hiçbir şeyi optimize etmeyin.

Kapsayıcı NSOrderSet kullanabilirsiniz
4

, NSOrderedSet Sınıf Referans görünümü aşağıdaki gibidir:

NSOrderedSet ve alt sınıf, NSMutableOrderedSet, nesnelerin sıralanmış koleksiyonuna program arabirimleri beyan ederim.

NSOrderedSet, farklı nesnelerin statik kümeleri için programsal arabirimi bildirir. Siz oluşturulduğunda statik bir setin girdileri oluşturursunuz ve daha sonra girişler> değiştirilemez. Diğer taraftan, NSMutableOrderedSet,> farklı nesnelerin dinamik kümeleri için programatik bir arabirim bildirir. Dinamik veya değişken bir set, herhangi bir zamanda girişlerin eklenmesine ve silinmesine izin verir;

Sıralı kümeleri, öğelerin sırasının önemi önemli olduğunda> dizilere alternatif olarak ve kümede bir nesnenin bulunup bulunmadığının test edilmesinde performans olarak değerlendirilebildiğinden,> bir dizinin üyeliği için sınamanın, sınamadan daha yavaş olduğunu kullanabilirsiniz. bir kümeye üyelik.

ziyaret http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSOrderedSet_Class/Reference/Reference.html

1

containsObject:

belirli bir nesne dizide mevcut olup olmadığını gösteren bir Boolean değeri verir.

  • (BOOL) containsObject: (id) birNesne Parametreler birNesne bir nesne.

Dönüş Değeri birNesne, aksi takdirde NO dizide varsa EVET.dizinin nesnelerin her mesajı (ve her IsEqual parametre olarak birNesne geçen: mesajı)

Tartışma

Bu yöntem birNesne bir IsEqual göndererek dizisinde mevcut olup olmadığını tespit eder.

NSArray.h

yılında Beyan

İlgili konular