Frågor om arrays i Cocoa

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1

Novis i Objective-C, och programmering i allmänhet. Vore tacksam om någon kunde hjälpa mig med följande två frågor.

Finns det någon metod, för att jämföra hela arrays med varandra, som returnerar antalet matchningar? Har använt 'containsObject' hittills, men den fungerar inte så bra om man har långa arrays. Hur kan man göra?

Undrar också hur man gör för att mata in alla objekt från en array i en string..?

O

  • Medlem
  • Mölndal
  • 2007-11-14 16:20

Om det inte finns en sån metod kan du ju lätt skriva en själv! Loopa igenom array1 och använd containsObject mot array2. Räkna och returnera!

Ursprungligen av memark:

Om det inte finns en sån metod kan du ju lätt skriva en själv! Loopa igenom array1 och använd containsObject mot array2. Räkna och returnera!

Precis vad jag tänkte. En så enkel sak är enklare att fixa själv än att gräva fram en färdig lösning för.

Ursprungligen av olindh:

Novis i Objective-C, och programmering i allmänhet. Vore tacksam om någon kunde hjälpa mig med följande två frågor.

Finns det någon metod, för att jämföra hela arrays med varandra, som returnerar antalet matchningar? Har använt 'containsObject' hittills, men den fungerar inte så bra om man har långa arrays. Hur kan man göra?

Det finns ingen sådan metod i kitet, och om du ska göra en sån själv kommer det att involvera -containsObject: vilket som sagt inte är helt effektivt tidskomplexitetmässigt. En alternativ lösning skulle kunna vara att använda NSSet, som är lite snabbare på sånt. Till exempel (antag att array1 och array2 finns och du vill jämföra dem):

NSMutableSet		*set;
unsigned int		count;

set = [NSMutableSet setWithArray:array1];
[set intersectSet:[NSSet setWithArray:array2]];
count = [set count];
Ursprungligen av olindh:

Undrar också hur man gör för att mata in alla objekt från en array i en string..?

Kolla NSArrays -componentJoinedByString:

  • Medlem
  • Stockholm
  • 2007-11-15 09:09

Om man bara skriver för Leopard kanske det kan vara på sin plats att tipsa om Fast enumeration vid iteration över en vektor. På Theocacao står att läsa:

Fast Enumeration

In Objective-C 1.x, your main options for loops were the standard for and while loops from C, and NSEnumerators. In Objective-C 2.0, you can use fast enumeration, which looks like this:
NSArray* allMovies = self.movies;

for ( Movie* oneMovie in allMovies ) {
..NSLog ( @"%@\n", oneMovie.summary );
}

....
It's a much simpler syntax, much faster than a for loop, and much safer since trying to modify the collection while it's being enumerated will cause an exception.

Vilket har flera fördelar!

Vänligen, Ylan

Tack för alla tips! Det uppskattas!

1
Bevaka tråden