2016-09-22 1 views
0

zu Swift Umwandlung Nachdem ich mein Projekt Swift 3.0 konvertiert, finde ich Fehler in Protokoll von Variable:Fehler nach 3,0

var arrayOfHours = stringArray.map {String(describing: $0!.characters.prefix(2))} 

Fehler ist:

code of error: "Optional(Swift.String.CharacterView(_core: Swift._StringCore(_baseAddress: Optional(0x000060800024ee70), _countAndFlags: 2, _owner: Optional(Swift._HeapBufferStorage<Swift._StringBufferIVars, 
Swift.UInt16>))))" 

wo auftretende mein Fehler ist?

Update:

var stringArray in console: [Optional("1226"), Optional("1249"), Optional("1312"), Optional("1336"), Optional("1359"), Optional("1422"), Optional("1446"), Optional("1509"), Optional("1532"), Optional("1549"), Optional("1607"), Optional("1624"), Optional("1642"), Optional("1659"), Optional("1717"), Optional("1734"), Optional("1752"), Optional("1809"), Optional("1827"), Optional("1844"), Optional("1902"), Optional("1919"), Optional("1954"), Optional("2032"), Optional("2107"), Optional("2142"), Optional("2217"), Optional("2252"), Optional("2327"), Optional("2402"), Optional("2437"), Optional("2512")] 
+4

Wie ist 'stringArray' definiert und was enthält es? Warum wurde das Auspacken in "$ 0!" Erzwungen? Was wäre die erwartete Leistung? - Wie immer wäre ein kleines * in sich geschlossenes * Beispiel sehr hilfreich. –

+1

Die Verwendung von 'String (Beschreibung:)' bedeutet, dass Sie etwas "erzwingen", um eine Zeichenfolge zu sein, die keine Zeichenfolge ist, anstatt sie richtig zu konvertieren. –

Antwort

1
var stringArray: [String?] = ["1226", "1249"] 
print(stringArray) // [Optional("1226"), Optional("1249")] 

var arrayOfHours = stringArray.map { String($0!.characters.prefix(2)) } 
print(arrayOfHours) // ["12", "12"] 
+0

Vielen Dank! Du hast entschieden, dass mein Problem und die App funktionieren! Groß! –

+0

Ohh hat die Konvertierung Ihre StringArray Form optionale String ?? – M090009

0

Nun seiner geben Ihnen einen Optional der String-Casting, weil String() Null zurück, wenn es etwas anderes eher als ein String gefunden, also, was Sie tun müssen, ist unwrap dass, wie in:

stringArray.map {String(describing: $0!.characters.prefix(2))!} 

hinzugefügt einfach eine Kraft unwrap ! zum String() Ergebnis

012.
+0

ok, ich tat es und sehe Fehler: Kann nicht erzwingen Wert von nicht-optionalen Typ 'String' erzwingen –

+0

ok können Sie mir sagen, was die Art von 'stringArray' – M090009