2009-12-06 16 views
5

Come inserire elementi nell'oggetto NSArray in C# (Monotouch)? Non trovo il metodo appropriato per farlo? Nel lato Objective-C, c'è un costruttore chiamato "initWithObjects" ma non lo trovo sul lato C#.Utilizzo di NSArray con Monotouch

pom

risposta

5

Mi spiace rispondere alla tua domanda con una domanda, ma sei sicuro di voler creare un NSArray?

Chiedo perché MonoTouch fa un po 'di lavoro dietro le quinte per non dover affrontare NSArray.

Se si va a the MonoTouch API Design page e fare una ricerca in-page per "NSArray", troverete questo:

Invece di trattare con NSString e NSArray il runtime espone invece questi come C# stringhe e fortemente array digitati in tutta l'API.

In altre parole, a meno che non si abbia una ragione specifica, non è necessario fare confusione con NSArray.

Ma, se si fai hanno un motivo, o se è la vostra preferenza, allora la risposta di Jason è corretto:

NSArray someArray = NSArray.FromNSObjects(thingOne, thingTwo, thingThree); 

L'unica cosa che vorrei aggiungere è che, se si è un obiettivo dev -C e dando MonoTouch una prova, si è abituati a questo:

NSArray *someArray = [NSArray arrayWithObjects:obj1, obj2, obj3, nil]; 

la differenza è la "nullo" alla fine della versione Objective-C. L'NSArray di MonoTouch non ha questo stesso requisito. Gli passi semplicemente gli oggetti che vuoi che contengano, e lo fa felicemente. Non è necessario terminare null :)

Spero che questo aiuti ...

+0

Grazie per aver portato gli sforzi interni di MonoTouch alla mia attenzione. Non lo sapevo. – Pompair

1

Sembra che questo metodo statico è quello che volete:

public static NSArray FromNSObjects (params NSObject[] items); 

usati in questo modo:

NSArray arr = NSArray.FromNSObjects(obj1, obj2, obj3); 
+0

Che non sta inserendo, che sta creando oggetti WITH. – Sneakyness

+0

Questo era in realtà quello che volevo, avevo appena formulato la mia domanda sbagliata. – Pompair

+0

Inadeguatezza: in base alla sua domanda, sembrava che volesse il modo MonoTouch di chiamare 'initWithObjects'. Pompair: potresti contrassegnare il mio come accettato :) – Jason

2

non sto usando MonoTouch - ma se siete cercando di manipolare un NSArray, vorrai usare il suo cugino, NSMutableArray.

+1

Questo vale anche per NSDictionary, poiché esiste anche NSMutableDictionary. Solo FYI. – Sneakyness