Ich versuche, eine Zeichenfolge (die eine Ganzzahl enthält) aus einem Array zu extrahieren und sie dann als int in einer Funktion zu verwenden. Ich versuche es mit intValue in ein int zu konvertieren.
Hier ist der Code, den ich versucht habe.
NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];
[_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]];
Ich erhalte diesen Fehler:
Wenn Sie das Argument 3 von 'loggedIn :::' übergeben, wird der Zeiger aus einer Ganzzahl ohne Umwandlung erstellt
Was ist los mit dir?
iphone
objective-c
string
int
Christian Stewart
quelle
quelle
(int)
PartloggedIn:::
Methodenaufrufe durchgeführt haben, die Ihrer Methode ähneln. Dies ist eine entschieden un-Objective-C-Methode, um Dinge zu tun.loggedIn:::
. Der Rest dieser Deklaration besteht nur aus Parameternamen, die nicht Teil des Selektors sind. Idiomatisch sollte es sein- (void)loggedIn:(NSString *)tusername password:(NSString *)tpassword userID:(int)userId
. Und dann würden Sie es als nennen[_appDelegate userIsLoggedIn:usernameField.text password:passwordField.text userID:[[_returnedArguments objectAtIndex:2] intValue]];
.Antworten:
Ich weiß wirklich nicht, was an dieser Frage so schwer war, aber ich habe es so gemacht:
[myStringContainingInt intValue];
Es ist zu beachten, dass Sie auch Folgendes tun können:
myStringContainingInt.intValue;
quelle
[myStringContainingInt intValue];
kann man auch schreiben wiemyStringContainingInt.intValue;
myStringContainingInt
zu groß ist, um in 32 Bit zu passen - tatsächlich 31 Bit seit dem Signieren?-[NSString intValue]
möglicherweise nicht genau so verhalten, wie Sie es erwarten. Aus den Dokumenten : Diese Eigenschaft ist 0, wenn die Zeichenfolge nicht mit einer gültigen dezimalen Textdarstellung einer Zahl beginnt.[@" 2 asdghjk" intValue]
Wird zum Beispiel zurückkehren2
.Sie können den String einfach so konvertieren: [str intValue] oder [str integerValue]
integerValue Gibt den NSInteger-Wert des Empfängertextes zurück.
Weitere Informationen finden Sie hier
quelle
_returnedArguments
ist ein Array, vonNSStrings
dem dieUITextField text
Eigenschaft erwartet. Keine Notwendigkeit zu konvertieren.Syntax-Fehler:
Wenn Ihr _appDelegate eine
passwordField
Eigenschaft hat, können Sie den Text wie folgt festlegenquelle
passwordField.text
ist das zweite Argument für dieloggedIn:::
Methode und[[_returnedArguments objectAtIndex:2] intValue]
das dritte Argument. Es wird nichts an eine Immobilie weitergegeben.Grundsätzlich sollte der dritte Parameter in
loggedIn
keine Ganzzahl sein, es sollte ein Objekt sein, aber wir können es nicht sicher wissen, da Sie die Parameter im Methodenaufruf nicht benannt haben. Geben Sie die Methodensignatur an, damit wir sicher sehen können. Vielleicht braucht es einNSNumber
oder so.quelle
int*
- tatsächlich scheint mir das ziemlich wahrscheinlich zu sein, da viele Leute, die Objective-C schreiben, ohne die Grundlagen von C zu lernen, davon ausgehen, dass Parametertypen nur Sterne als Teil ihrer Syntax enthalten.Beachten Sie, dass internationale Benutzer möglicherweise ein anderes Dezimaltrennzeichen verwenden.
.
In diesem Fall können die Werte verwechselt werden oder bei VerwendungintValue
einer Zeichenfolge einfach Null werden .Zum Beispiel in Großbritannien
1.23
geschrieben1,23
, so dass die Zahl1.777
Eingabe durch den Benutzer sein würde , wie1,777
, was, wie.intValue
, wird1777
nicht1
(gekürzt).Ich habe ein Makro erstellt, das Eingabetext basierend auf einem Gebietsschemargument, das Null sein kann, in eine NS-Nummer konvertiert (wenn Null das aktuelle Gebietsschema des Geräts verwendet).
quelle
Wenn ich Sie richtig verstanden habe , müssen Sie konvertieren
NSString
zuint
? Versuchen Sie diesen Code-Frieden:quelle
intValue
Methode. developer.apple.com/iphone/library/documentation/cocoa/…