2016-07-20 10 views
1

Für eine Apple Watch Erweiterung stelle ich einen AlertController vor und erhalte eine Anzeige wie "Preset Optional (2)" anstelle von "Preset 2" - darunter steht mein Code. Wie kann ich das Fakultativ loszuwerden (habe sie nicht denken, Streicher hatte)Option für String-Anzeige erhalten

if let s = info["description"] 
{ 
    let action = WKAlertAction(title: "OK", style: WKAlertActionStyle.Default, handler: {() -> Void in 
     // 
    }) 

    //let arr = s.componentsSeparatedByString("_") 
    let arr = s.characters.split("_", maxSplit: Int.max, allowEmptySlices: false).map(String.init) 
    self.presentAlertControllerWithTitle("Preset \(arr[0])", message: "\n\(arr[1])", preferredStyle: WKAlertControllerStyle.Alert, actions: [action]) 
} 

Hier ist, wie info [ „Beschreibung“] abgeleitet:

func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) 
{ 
    if let info = message as? Dictionary<String,String>{    
     if let s = info["description"] 
     { 
      ... 
+0

Gerade für die Zukunft kann jede Variable ein optional sein. – JAL

+0

Versuchen Sie, die Entpackung wie Preset \ (arr [0]) zu erzwingen! –

+3

@VishalSonawane ** NEIN ** Du solltest niemals etwas auspacken, außer du hast einen wirklich guten Grund dazu. – JAL

Antwort

2

Abwickelwerkzeug der Inhalt des Arrays oder verwenden, um die Null Koaleszierstruktur Betreiber:

if let str = arr[0] as? String { 
    let title = "Preset \(str)" 
} 

oder

"Preset \(arr[0]) ?? \(someDefaultValue)" 

Wenn s ist ein String? Sie, dass zuerst auspacken wollen:

if let s = info["description"] as? String { 
    // ... 
} 
+0

wenn let str = arr [0] als? String Bedingte Umwandlung von 'String' zu 'String' erfolgt immer als Warnung. –

+0

'arr' ist ein Array von Strings, und das Subskribieren eines Arrays von Strings gibt kein Optional zurück. Ich fürchte also, dass OP ein anderes Problem hat, das wir nicht sehen können. Ich wäre gespannt auf den Inhalt von 'info [" description "]' ... – Moritz

+0

@EricD Yep, angenommen, das Array war optional Strings. Wir müssten sehen, was der Inhalt ist. – JAL

Verwandte Themen