2009-12-06 7 views
5

Wie Einfügen von Elementen in NSArray-Objekt in C# (Monotouch)? Ich finde keine geeignete Methode dafür? In Objective-C-Seite gibt es einen Konstruktor namens "initWithObjects", aber ich finde das nicht auf C# -Seite.Verwenden von NSArray mit Monotouch

pom

Antwort

5

Entschuldigung, Ihre Frage mit einer Frage zu beantworten, aber sind Sie sicher, dass Sie ein NSArray erstellen möchten?

Ich frage, weil MonoTouch hinter den Kulissen arbeitet, so dass Sie nicht mit NSArray umgehen müssen.

Wenn Sie the MonoTouch API Design page gehen und eine In-Page-Suche nach „NSArray“, finden Sie diese:

Statt mit NSString und NSArray der Laufzeit statt entlarven diese als C# Strings Umgang und stark typisierte Arrays in der gesamten API.

Mit anderen Worten, wenn Sie nicht einen bestimmten Grund haben, müssen Sie sich nicht mit NSArray herumärgern.

Aber, wenn Sie zu tun haben einen Grund, oder wenn es Ihre Präferenz ist, dann Jasons Antwort ist richtig:

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

Das einzige, was ich noch hinzufügen möchte, ist, dass, wenn Sie ein Ziel -C Entwickler und gibt Monotouch einen Versuch, Sie sind daran gewöhnt:

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

der Unterschied ist die „Null“ am Ende der Objective-C-Version. MonoTouch NSArray hat diese Anforderung nicht. Du gibst ihm einfach die Objekte hin, die es enthalten soll, und tut es glücklich. Keine abschließende Null erforderlich :)

Hoffe, dies hilft ...

+0

Danke, dass Sie mir die internen Bemühungen von MonoTouch gezeigt haben. Das wusste ich nicht. – Pompair

1

Es ist wie diese statische Methode sieht, was Sie wollen:

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

wie folgt verwendet:

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

Das ist nicht Einfügen, das Erstellen von WITH-Objekten. – Sneakyness

+0

Das war eigentlich was ich wollte, ich hatte meine Frage nur falsch formuliert. – Pompair

+0

Sneakyness: Basierend auf seiner Frage klang es so, als ob er wollte, dass der MonoTouch-Modus 'initWithObjects' aufruft. Pompair: Sie könnten meine als akzeptiert markieren :) – Jason

2

Ich bin mit Monotouch nicht - aber wenn Sie Wenn Sie versuchen, ein NSArray zu manipulieren, werden Sie dessen Cousin NSMutableArray verwenden wollen.

+1

Dies gilt auch für NSDictionary, da es auch NSMutableDictionary gibt. Nur zu deiner Information. – Sneakyness