Jämföra värden i arrays med varandra i Cocoa

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

Hej,

Om man har två arrays med lika många objects i båda, och alla object är floatvärden, kan man då jämföra dessa två arrays och få ett totalt procenttal eller liknande på hur mycket alla floatvärden i den ena liknar värden på motsvarande index i den andra?

O

  • Medlem
  • Mölndal
  • 2007-12-10 11:58

Ja, det kan man. Men det finns ingen färdig funktion för det, om det är det du undrar.

Hur skulle man kunna göra det då? Jag har funderat länge och väl, men inget jag testat än så länge har fungerat som jag vill.

Du låter en loop köra lika många gånger som antalet objekt i arrayerna och i den gör du din uträkning. NSEnumerator kan vara lämplig att använda då du loopar.

  • Medlem
  • Stockholm
  • 2007-12-11 07:41

Eller om du kör Leopard

Citat:

Fast Enumeration
The final major new feature in Objective-C 2.0 is fast enumeration, an Objective-C syntax addition that lets you operate across all the members of a collection simply and easily. Using fast enumeration results in clearer and easier to understand code. For example, if you wanted to iterate over an array of strings, you could use the following code:

NSArray *array = 
    [NSArray arrayWithObjects:@1, @2, @3, nil];

for (NSString *string in array) {
    NSLog(@"string is %@", string);
}

Using fast enumeration is considerably more efficient than using an NSEnumerator object directly. It provides a much more concise syntax. And, best of all, it provides for safe enumeration. If a collection is modified during enumeration, an exception is raised. Since mutation of a collection is forbidden during enumeration, multiple enuermations can be performed on multiple threads concurrently.

Fast enumeration works with any collection that implements the NSFastEnumeration protocol. All of the Cocoa collection classes, including NSArray, NSDictionary, and NSSet, as well as NSEnumerator, implement this protocol. You also add fast enumeration to your own collections by supporting the NSFastEnumeration protocol, which consists of a single method.

Vänligen, Ylan

Lyckades lösa det genom att ta differensen mellan varje object i den ena arrayen och dess motsvarande i den andra, och sedan medelvärdet av alla differenser. Ju lägre värde desto mer lika är dessa båda arrays. Går säkert att göra på något smartare sätt, men detta fungerade fint

1
Bevaka tråden