2017-05-23 6 views
1

J'ai une question. Je travaille sur une application avec des devises et je veux mettre le symbole de devise correcte automatiquement dans l'applcation let pour couper la chaîne complète. Tout d'abord j'ai ce code ciselée:Implémenter une chaîne dans un séparateur Swift3

let firstPriceTrimmed = firstPrice.components(separatedBy: "€").flatMap { String($0.trimmingCharacters(in: .whitespaces)) }.last 

maintenant mon code look ist comme:

switch sideIDS { 
    case 6, 8, 9, 10, 12: 
     var current = "€" 
     let firstPriceTrimmedNew = firstPriceTrimmed?.components(separatedBy: String(current)) { String($0.trimmingCharacters(in: .whitespaces)) }.first 
    case 7: 
     var current = "£" 
     let firstPriceTrimmedNew = firstPriceTrimmed?.components(separatedBy: String(current)) { String($0.trimmingCharacters(in: .whitespaces)) }.last 
    case 11: 
     var current = "₹" 
     let firstPriceTrimmedNew = firstPriceTrimmed?.components(separatedBy: String(current)) { String($0.trimmingCharacters(in: .whitespaces)) }.last 
    default: 
     XCTFail() 
    } 

Mais cela n'a pas fonctionné. XCode mettre le message "Impossible d'invoquer 'composants' avec une liste d'arguments de type '(separatedBy: String ?, (_) -> _)' .Quel est faux? Je ne comprends pas ce XCode est recherché ...

Répondre

1

Vous n'avez pas ajouté .flapMap ou toute autre fermeture avec un résultat de components(separatedBy:) dans tous les cases de switch.

let firstPriceTrimmedNew: String 

switch sideIDS { 
case 6, 8, 9, 10, 12: 
    let current = "€" 
    firstPriceTrimmedNew = firstPriceTrimmed?.components(separatedBy: current).flatMap { String($0.trimmingCharacters(in: .whitespaces)) }.first 
case 7: 
    let current = "£" 
    firstPriceTrimmedNew = firstPriceTrimmed?.components(separatedBy: current).flatMap { String($0.trimmingCharacters(in: .whitespaces)) }.last 
case 11: 
    let current = "₹" 
    firstPriceTrimmedNew = firstPriceTrimmed?.components(separatedBy: current).flatMap { String($0.trimmingCharacters(in: .whitespaces)) }.last 
default: 
    XCTFail() 
} 
+0

Merci beaucoup cela fonctionne. Mais maintenant j'ai une autre question. Mon problème est maintenant que je ne peux pas obtenir la nouvelle information en dehors de l'affaire.La variable 'firstPriceTrimmedNew' est en dehors du cas supprimé.Est-il possible d'obtenir l'information en dehors de l'affaire? 'return firstPriceTrimmedNew' n'a pas fonctionné ... – Saintz

+0

@Saintz Vérifiez la réponse éditée –

+0

Avez-vous une solution pour obtenir l'information en dehors de l'affaire? – Saintz