Ich hasse es, dies zu veröffentlichen, weil es wie grundlegende Swift scheint, jedoch kann ich keinen Weg finden, diese optionale unwrapped bekommen und ich habe eine Idee, dass es mit der Art und Weise NSUserDefaults sein kann Speichern, aber ich bin mir nicht sicher.Kann nicht auspacken Optional beim Auffüllen der Zelle
ich eine [Zeichenfolge] speicherte als so:
NSUserDefaults.standardUserDefaults().setObject(infectedNamesArray, forKey: "infectedNamesArray")
und es so unter Hinweis:
if let infected = NSUserDefaults.standardUserDefaults().objectForKey("infectedNamesArray")
{
infectedNamesArray = infected as! [String]
}
ich das Array bin mit einer wieder verwendbaren Zelle so füllen:
switch whichScoreSet
{
case 0:
cell.nameLabel.text = "Test"
cell.scoreLabel.text = "Test"
case 1:
cell.nameLabel.text = infectedNamesArray[indexPath.row]
cell.scoreLabel.text = "\(infectedGameScoreTotals["\(infectedNamesArray[indexPath.row])"]!)"
case 2:
cell.nameLabel.text = "Test"
cell.scoreLabel.text = "Test"
default:
print("Something Went Wrong")
}
Alles funktioniert gut, ich kann zwischen Tabellendaten und Ladeansichten wechseln. Wenn die Daten aus cell.nameLabel.text angezeigt werden, wird die Option optional angezeigt. d. h. optional (valueFromArray)
Ich habe versucht, es auszupacken, und Xcode sagt mir, dass ich eine Zeichenfolge nicht auspacken kann. Ich habe versucht, es als eine Zeichenfolge zu werfen und Xcode sagt mir, dass es keinen Unterschied machen würde, weil es bereits eine Zeichenfolge ist.
Ich bin auf diesem grundlegenden Swift ratlos, also bitte vergib die Frage. Techniken aus vielen anderen SO-Posts liefern die gleichen Ergebnisse.
Was übersehe ich hier?
EDITED
Die Variable wird außerhalb einer Klasse, die als solche erklärt.
var infectedNamesArray = [String]()
Es hängt davon ab, wie 'infictedNamesArray' deklariert wird. Wenn Sie es als nicht-optionalen leeren Array deklarieren 'var infizierteNamesArray = [String]()' alles wird gut. – vadian
@vadian Das ist, wie ich es erklärt habe, weshalb ich für eine Schleife geworfen werde. –
Wo ist 'inficedNamesArray' definiert? Kannst du diesen Code posten? –