Immer die Größe eines Arrays
ich habe einige code, der erfordert die Verwendung einer for-Schleife zum Lesen von Variablen aus einem array.
int size=sizeof names;
NSLog(@"thelast one is %d",size);
NSString *usersName=userName.text;
NSString *usersPass=passWord.text;
for (i=0; i<=size;i++){
NSString *namesArray=[names objectAtIndex:i];
NSString *passArray=[pass objectAtIndex:i];
NSLog(@"namesArray %@",namesArray);
NSLog(@"passArray %@",passArray);
if([namesArray isEqualToString:usersName]){
userValid=1;
NSLog(@"The content of arry4 is %@",namesArray);
}
if([passArray isEqualToString:usersPass]){
passValid=1;
NSLog(@"The content of arry4 is %@",passArray);
}
else {
userValid=0;
passValid=0;
}
}
Habe ich einige Probleme, weil jedes mal, wenn diese Funktion aufgerufen wird, innerhalb des Programms aus, es ist fast so, als wenn das 'sizeof Namen' ist falsch, daher nicht alle Werte im array aktiviert sind.
Ich bin generell ein Java-Programmierer, ich bin also verwendet, um Namen.Länge, und mir wurde gesagt, sizeof Namen ist im wesentlichen die gleiche Sache... keine Hilfe?
Cheers.
Wäre es nicht besser, NSDictionary, anstatt zwei arrays, die halten Sie den Benutzernamen und das zugehörige Passwort?
Sie müssen nicht ein
... und, natürlich, Sie nicht speichern die Passwörter als plain text. richtig? RECHTS?!?
Sie müssen nicht ein
break
. Das bedeutet, dass, wenn Sie irgendwelche anderen Namen, nachdem ein Gültiger name ist, dann wird die Schleife weiterhin ausgeführt, und Klamotten die Werte von userValid
und userPass
. Und deine Namensgebung ist nicht intuitiv - Sie haben namesArray
enthält eine Zeichenfolge, etc - das macht den code schwerer zu Lesen.... und, natürlich, Sie nicht speichern die Passwörter als plain text. richtig? RECHTS?!?
InformationsquelleAutor gunmania0 | 2011-06-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht verwenden, sizeof. Verwenden
[names count]
.InformationsquelleAutor BJ Homer
Den Sie verwenden möchten [Namen count] nicht sizeof Namen. Sizeof wird Ihnen die Größe der tatsächlichen Namen Objekt-pointer selbst und nicht die Anzahl der Elemente, da es dynamische Speicher-Typ.
InformationsquelleAutor Nektarios
Erhalten die Anzahl der Elemente gespeichert
NSAarray
sollten Sie die Instanz-Methodecount
gibt eineNSUInteger
.Alternatevely, können Sie die Iteration über diese Elemente mit der
for in
Schleife, die verfügbar ist, auch in Java, wenn ich mich Recht erinnere.Beachten Sie, dass
sizeof
ist ein C-operator liefert die Größe in bytes der operand, so ist es nicht Ihnen sagen, wie viele Elemente gespeichert werden, dieNSArray
, aber die Größe in bytes eines NSArray Instanz.InformationsquelleAutor Alessandro Vendruscolo
Ich weiß, Ihre Frage bereits beantwortet wurde - aber hier ist ein mehr Kakao Schreibweise
InformationsquelleAutor Abizern
Kann man auch Schnell Enumeration, in einigen Fällen kann es sein, klar zu Leser:
InformationsquelleAutor zaph