2017-10-23 4 views
0

Objective C initialisieren:kann nicht einen Parameter vom Typ ‚id _NonNull‘ mit einem L-Wert vom Typ double

Ich habe mehrere Variablen vom Typ double, long long, NSString und int, die ich in einem Array setzen sein wollen gedruckt als einzelne Zeile in einer CSV-Datei

NSArray * ValArray = [NSArray ArrayWithObjects: var1, var2, var3, var4, var5, nil];

Hier ist var1 vom Typ double und var2, var3 sind vom Typ long long.

Das gibt mir eine Syntaxfehlermeldung, dass bei var1

„Kann nicht einen Parameter vom Typ‚id _NonNull‘mit einem L-Wert vom Typ double initialisieren“ Ich bin ein Neuling in Objective C und nicht in der Lage, herauszufinden, was Ich mache falsch.

Antwort

2

Der Inhalt von NSArray (und NSDictionary) in Objective-C muss Objekte sein. Alle Skalartypen intdouble usw. sind keine Objekte.

Es gibt eine einfache Lösung:

Wrap alle skalare Typen in dem Kontext NSNumber initializer @()

double var1 = 12.0; 
NSString *var2 = @"Foo"; 
NSArray *valArray = [NSArray arrayWithObjects: @(var1), var2, nil]; 

oder noch kürzer

NSArray *valArray = @[@(var1), var2]; 

den double Typen Um wieder aus dem Array Sie müssen

schreiben 0
double var3 = valArray[0].doubleValue; 

Randnotiz: Variablennamen sollten mit einem Kleinbuchstaben beginnen.

+0

danke. das hat geholfen –

1

Convert var1, var2, var3 zu NSNumber löst es.

Verwandte Themen