2017-05-16 4 views
0

Einfach nur neugierig, in Swift, ist es ideal eine leere NSMutableDictionary Variable, NSMutableDictionary = [:], zu initialisieren und später seinen Wert auf ein neues Wörterbuch neu zuweisen (von einer API zum Beispiel kommen),Swift - Empty NSMutableDictionary oder NSDictionary? Optional

OR, ist es besser, ein optionales NSDictionary, NSDictionary? zu deklarieren und es einem neuen Wörterbuch zuzuordnen?

+0

Es ist besser, ein Swift 'Dictionary' über' NS (Mutable) Dictionary' zu verwenden. Und die Optionalität hängt vollständig davon ab, ob Sie den Unterschied zwischen "keine Antwort" und "leere Antwort" unterscheiden können. – Hamish

Antwort

0

Das hängt von Ihren Bedürfnissen ab, möchten Sie, dass es manchmal nil ist? ist es manchmal Null? Wenn ein Array immer einen Wert hat, auch wenn es ein leerer Wert ist, möchte ich es direkt initialisieren und nicht mit dem Auspacken überall hin kämpfen.

Vielleicht, wenn Sie zwei Arrays hatten, war ein normales Array, und das zweite war ein Suchergebnis. Vielleicht möchten Sie prüfen, ob das gesuchte Ergebnis zuerst Null ist. Wenn ja, zeigen Sie das Array1 an, wenn es nicht angezeigt wird.

Und das bedeutet, dass Sie nur "manchmal" suchen, so dass Array nur manchmal verwendet wird - so können Sie auch, wenn nicht verwendet, die Zuordnung aufgehoben haben, wenn Sie es die meiste Zeit nicht verwenden.

EDIT: Ich habe Arrays in meinem Beispiel verwendet, aber das gleiche gilt für ein Wörterbuch in diesen Situationen. EDIT: In Swift Es ist am besten, 'NS' Klassen zu vermeiden, manchmal müssen Sie sie verwenden, sicher. Aber Swifts Wörterbuch macht den Job.

Beispiel:

var sometimesUselessDict: Dictionary<String, AnyObject>? 
var alwaysUsedDictionary = Dictionary<String, AnyObject>() 

Prost

0

Also mit Swift wäre es technisch beste Praxis sein, einen Dictionary-Typen zu verwenden. So zum Beispiel:

var dict: Dictionary<String, Int> 

Wenn Sie das Wörterbuch als Ganzes benötigen, um nil zu sein, verwenden Sie ein optionales.

0

Sie sollten es nur dann optional machen, wenn Sie in der Lage sein müssen, ein leeres oder gar nicht vorhandenes Wörterbuch zu unterscheiden. Wenn Sie beispielsweise Daten von einem Server empfangen, möchten Sie möglicherweise zwischen einer erfolgreichen Antwort, die keine Daten zurückgegeben hat (leeres Wörterbuch) und einer fehlgeschlagenen oder ungültigen Antwort (null) unterscheiden.

Wenn diese Unterscheidung nicht wichtig ist, würde ich immer mit einem nicht-optionalen gehen, um unnötiges Auspacken zu vermeiden.

Verwandte Themen