Ich lerne Swift, und ich kann Dictionary
darin sehen.
Aber es gibt viele Beispiele, die NSDictionary
mit Swift verwenden.
Was ist der Unterschied zwischen diesen beiden?
Ich möchte ein Array mit Index in Swift wie ein Array in PHP verwenden.
Welches ist besser zu verwenden?Was ist der Unterschied zwischen NSDictionary vs Dictionary in Swift?
Antwort
Wörterbuch ist eine native Swift-Struktur. NSDictionary ist eine Cocoa-Klasse. Sie sind überbrückt (innerhalb der üblichen Grenzen), wie die Dokumente sehr deutlich und vollständig erklären.
Es ist genau parallel zu Array und NSArray.
Hier ist der Deal,
Für alle Absichten und Zwecke, sie sind das gleiche. Solange Sie Foundation
importieren, wird der Compiler sie als die gleiche Sache kennen.
Für spezifische Unterschiede hilft thus Apple doc.
Übersicht
NSObject
ist die Wurzelklasse der meisten Objective-C Klassenhierarchien. Über NSObject
erben Objekte eine grundlegende Schnittstelle zum Laufzeitsystem und die Fähigkeit, sich als Objective-C-Objekte zu verhalten.
Was bedeutet, kurz gesagt, dass NSObjects
alte Relikte aus alten (objektiven c) Zeiten sind.
Was ist besser, das liegt an Ihnen. Ich finde swift Objekte besser als das ns Gegenstück nur für den Zweck, Code modern zu halten, jedoch müssen Sie möglicherweise ns Objekte verwenden, wenn Sie Code wie NSURLCONNECTION
verwenden, die ns Objekte erfordert.
Hoffe, das hilft.
Sind sie das? Swift-Wörterbücher sind pass-by-value, während NSDictionaries by reference sind. –
In der Praxis und im Hinblick auf die starke Art Konzept des Swift der wesentliche Unterschied ist
NSDictionary
im Allgemeinen nicht näher bezeichnet eine bestimmte Art haben, istDictionary
soll eingeben.
Daher ist native Dictionary
vorzuziehen.
Betrachten Sie dieses Beispiel
let dataArray = NSMutableArray()
let d0 = ["code":"AA","name":"American Airlines"]
let d1 = ["code":"BA","name":"British Airlines"]
let d2 = ["code":"DA","name":"Delta Airlines"]
dataArray.addObject(d0)
dataArray.addObject(d1)
dataArray.addObject(d2)
später ...
let d0 = dataArray.objectAtIndex(0) as! [String:String]
let lbl = UILabel()
lbl.text = d0["code"] // no xcode warnings
Mit NSDictionary in schnellen
let d0 = dataArray.objectAtIndex(0) as! NSDictionary
Jetzt müssen Sie das Wörterbuch Wert in Form zwingen.
lbl1.text = d0["name"] as! String
Aus Erfahrung - wenn sie mit Json Antworten zu tun - ich habe verwendet NSDictionary wie es lose typisiert ist, und ich kann nicht genau wissen, garantiert, was es enthält - nur das gilt json. Es gibt eine wachsende Bibliothek von einheimischen Swift-Tools, um diesen Anwendungsfall zu behandeln, schlage ich vor, hier zu suchen https://github.com/search?q=json+NSDictionary+swift&type=Code&utf8=%E2%9C%93
In diesem Fall - müssen Sie um Daten mit dem "wenn lassen" tanzen hacken.
if let results = json["result"] as? NSDictionary
schließlich - NSMutableDictionary ist gleichauf mit Wörterbuch, da Sie nicht in der Lage sein, die Schlüssel/Wert-Paare auf einem NSDictionary zu mutieren.
z.
results["code"] = 100 // <-- BOOM
die Arbeit um -
let mResults = NSMutableDictionary(dictionary:results)
mResults["code"] = NSNumber(100) // <-- OK
, die die Klärung bittet - Sie können nur halten NSObjects (NSNumbers/NSArrays/NSCOUNT/NSSet) innerhalb der NSMutableDictionaries. Das Swift Dictionary kommt um diese Sache herum.
- 1. Convert NSDictionary in Swift Dictionary
- 2. Was ist der Unterschied zwischen() vs [] vs {}?
- 3. Was ist der Unterschied zwischen:
- 4. Was ist der Unterschied zwischen Sjlj vs Zwerg vs seh?
- 5. Was ist der Unterschied zwischen Schließungen und Rückrufen in Swift?
- 6. Was ist der Unterschied zwischen Fragezeichen und Ausrufezeichen in swift?
- 7. Was ist der Unterschied zwischen SequenceType und CollectionType in swift?
- 8. in Swift: Unterschied zwischen Array VS NSArray VS [ANYOBJECT]
- 9. Datenbank vs Tabellenbereich, was ist der Unterschied?
- 10. Char.IsDigit() vs Char.IsNumber(), was ist der Unterschied?
- 11. bluebird.js vs bluebird.core.js Was ist der Unterschied?
- 12. Unterschied von Dictionary.Add vs Dictionary [Schlüssel] = Wert
- 13. Swift - was ist der Unterschied zwischen Metatype .Type und .self?
- 14. setEnabled() vs setClickable(), was ist der Unterschied?
- 15. Shim vs. Sham: Was ist der Unterschied?
- 16. Was ist der Unterschied zwischen NSURLSessionDataTask vs NSURLSessionDownloadTask
- 17. Was ist der Unterschied zwischen process.cwd() vs __dirname?
- 18. Was ist der Unterschied zwischen `while (true)` vs `while (\ true)`?
- 19. Was ist der Unterschied zwischen sendmail via CGI vs. Perl?
- 20. EQU vs DC.B. Was ist der Unterschied?
- 21. Erlauben vs Stub, was ist der Unterschied?
- 22. Was ist der Unterschied zwischen Logcat vs dmesg?
- 23. Was ist der Unterschied zwischen FreeGLUT vs GLFW?
- 24. underscorejs - Was ist der Unterschied zwischen extendOwn vs extend?
- 25. Was ist der Unterschied zwischen Template.Instance() vs Vorlage.data?
- 26. Was ist der Unterschied zwischen String (Wert) vs value.toString()
- 27. Was ist der Unterschied zwischen nextElementSibling vs nextSibling
- 28. Was ist der Unterschied zwischen Solr vs Websolr?
- 29. Was ist der Unterschied zwischen process.cwd() vs process.env.PWD?
- 30. Was ist der Unterschied zwischen float x [] vs. float [] x?
so Wörterbuch + NSDictionary ist das gleiche? aber ich sehe, es gibt zwei Möglichkeiten, es zu deklarieren. Also habe ich verwirrt. – TomSawyer
Sie sind "die gleichen", da die Laufzeit zwischen den beiden konvertieren wird. – CodaFi
Eigentlich ist 'Dictionary' eine Struktur, keine Klasse. – newacct