Anfügen von text in einer Schleife in Swift
Muss ich anfügen, ein array von string-und endlich eine einzelne Zeichenfolge, die angezeigt werden in einem UILabel
im folgenden format ein.
Action1 | Action2 | Action3 | Action4
for action in actions {
actionLabel.text += "\(action.name) |"
}
Dies gibt mir die folgende Fehlermeldung.
'String?' is not identical to 'UInt8'.
Einen Grund für diesen Fehler? Gibt es eine andere Möglichkeit, dies zu erreichen?
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist einer der Swift-viele kryptische Fehlermeldungen. Soweit ich das sagen kann, weil die linke Seite und Rechte Seite Stimmen nicht überein (
Optional<String>
vsString
), Ihre beste Vermutung ist, dass Sie gemeint ist, für beide Seiten zu seinUInt8
.Sich über die Tatsache, dass
UILabel.text
optional ist, können Sie Dinge tun, die lange Weg:Dieser ruft den aktuellen Wert oder einen leeren string und fügt den text ein. Sie könnte auch das problem vermeiden, funktional:
Update
Hinblick auf iterative Lösung mit einem extra
|
am Ende in "", war ich versucht zu veranschaulichen, die Lösung nur auf die Zeile die den Fehler verursacht. Ihre geposteten code macht Annahmen über actionLabel wurde zunächst leer und hat einige (wahrscheinlich unbedeutend) Leistung Kosten der Einstellung der label-text mehrere Male.Einen kompletten iterativen Ansatz könnte wie folgt Aussehen:
Mapping und Eintritt sind solche gemeinsamen Operationen, die die meisten Sprachen haben saubere prägnante Möglichkeiten, es zu tun, ohne iteration. Zum Beispiel, ich würde empfehlen, die folgenden in Objective-C:
map
undjoin
, ist es wahrscheinlich die einfachste Lösung für dieses problem und wahrscheinlich auch die klarsten.text
Eigenschaft ist optional, kannnil
. Sie können optional chaining zu kommen über diese. Auch den ursprünglichen text, bevor er durch die Schleife.