Swift - Lesen-plist-Datei in ein array?
Habe ich einen mini-übersetzung aus dem englischen Worten spanischen Wörter. Ich möchte die englishArray.plist anstelle von meinem englishArray = ["Katze"] Wie erstelle ich diese?
Ich habe auch eine lokalisierbare.Saiten, um den Wert abzurufen "die Katze" für "el gato", aber ich möchte diese abrufen von englishArray.plist
Begann ich mit diesem aber nicht sicher, ob ich auf dem richtigen Weg
let path = NSBundle.mainBundle().pathForResource("englishArray", ofType: "plist")
let plistEnglishArray = NSArray(contentsOfFile: path!)
Hier ist der rest von meinem code:
var englishArray: [String] = ["rainbow", "boots", "heart", "leaf", "umbrella", "tired", "angry", "cry", "the cat" ]
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
self.translateTextField.delegate = self
picker.delegate = self
picker.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
@IBAction func translateButtonTapped(sender: UIButton) {
let emptyString = self.translateTextField.text
if (emptyString!.isEmpty) {
print("please enter a word")
}
for transIndex in englishArray.indices {
if englishArray[transIndex] == emptyString!.lowercaseString {
//englishArray
//translateLabel.text = "\(spanishArray[transIndex])"
translateLabel.text = NSLocalizedString(emptyString!.lowercaseString, comment:"")
print(emptyString)
return
}
}
}
- Ihr root-Objekt, es ist ein Wörterbuch. Sie haben zwei Möglichkeiten: Importieren Sie das Wörterbuch ein oder fixieren Sie Ihre plist-Datei
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie Ihre
root
ObjektArray
, dannif let englishArray = NSArray(contentsOfURL: url) as? [String] {
if let url = NSBundle.mainBundle().URLForResource("englishArray", withExtension: "plist"), englishArray = NSArray(contentsOfURL: url) as? [String] { for word in englishArray { print(word) } }
[String]
array in ein anderes[String]
. Warum nicht einfachmyEnglishArray = englishFromPlist
stattfor-in
?Swift 4
Die absolute einfachste Weg, dies zu tun ist
Objekt myPlist ist ein Array oder ein Dictionary, welches Sie als Basis Ihrer plist.
Swift 4
Können Sie kodierbar die Reine swift Typ.
Erstens laden von Plist-Datei aus
bundle
dann verwendenPropertyListDecoder
Vollständige code -
Lesen eine Ressource in Ihrem bundle mit dem Namen "englishArray.plist", und speichern Sie es in der unveränderlichen Variablen
english
. Es wird eine Optionale, sollten Sie testen, bevor Sie verwenden.Es ist mit einem Verschluss versehen, um die Datei Lesen und zurück, das array, so können Sie einen unveränderlichen Wert eher als eine veränderliche variable, die geändert werden können. Es ist eine gute Idee, immutables, wo immer Sie können - Sie fördern die Stabilität.
Hier ist die Lösung für swift 3. Für diese Lösung brauchen Sie nicht zu ändern Typen in der plist-Struktur (halten Dictionary, Array, so wie Sie ist). Beachten Sie auch, dass da das array Namen in der plist ist auch englishArray so dass die (Wert zum Schlüssel-argument in der zweiten if-Anweisung ist auch englishArray.