Vérification orthographe String dans la langue du device

DrakenDraken Membre
mai 2017 modifié dans API UIKit #1

Je voudrais vérifier si un mot existe dans le dictionnaire linguistique courant. Par exemple, savoir si le mot "saucisse" existe dans le dictionnaire français d'iOS. C'est certainement bête comme chou, mais je n'arrive pas à  retrouver le bon framework (oui je sais, je suis une bille en anglais).


 


Une idée, une suggestion, une piste ?


 


 


Réponses

  • Joanna CarterJoanna Carter Membre, Modérateur
    UITextChecker ?
  • DrakenDraken Membre
    mai 2017 modifié #3

    Merci Joanna.


    J'ai trouvé tout seul après 20 minutes de googlisation recherche. Mais c'est toujours agréable de voir à  quel point tu es réactive.


    Joanna, la doc c'est aussi elle ! (les anciens comprendront la référence)


  • DrakenDraken Membre

    Cela fonctionne, mais je suis un peu surpris par tout ce qui s'affiche dans la fenêtre de débug, pendant la vérification :



    import UIKit

    class ViewController: UIViewController {

    override func viewDidLoad() {
    super.viewDidLoad()

    let mot = "voiture"
    let langue = "fr"
    if verifierHortographe(mot: mot, langue:langue ) {
    print ()
    print (mot + " existe bien dans la langue " + langue)
    print ()
    } else {
    print ()
    print (langue + ": moi pas comprendre " + mot + " !")
    print ()
    }

    }

    func verifierHortographe(mot:String, langue:String) -> Bool {
    let checker = UITextChecker()
    let range = NSMakeRange(0, mot.characters.count)
    let test = checker.rangeOfMisspelledWord(in: mot, range: range, startingAt: 0, wrap: false, language: langue)
    return test.location == NSNotFound
    }
    }


    test "voiture" langue "fr"


     



     


    2017-05-27 21:37:49.131643+0200 orthographe[1915:114150] 0x608000145280 Copy matching assets reply: XPC_TYPE_DICTIONARY  <dictionary: 0x608000145280> { count = 1, transaction: 0, voucher = 0x0, contents =


    "Result" => <int64: 0x608000221320>: 29


    }


    2017-05-27 21:37:49.133109+0200 orthographe[1915:114150] 0x608000145ee0 Daemon configuration query reply: XPC_TYPE_DICTIONARY  <dictionary: 0x608000145ee0> { count = 2, transaction: 0, voucher = 0x0, contents =


    "Dictionary" => <dictionary: 0x608000145cd0> { count = 1, transaction: 0, voucher = 0x0, contents =


    "ServerURL" => <dictionary: 0x608000145800> { count = 3, transaction: 0, voucher = 0x0, contents =


    "com.apple.CFURL.magic" => <uuid: 0x60800004e130> C3853DCC-9776-4114-B6C1-FD9F51944A6D


    "com.apple.CFURL.string" => <string: 0x60800004e070> { length = 30, contents = "https://mesu.apple.com/assets/"}


    "com.apple.CFURL.base" => <null: 0x10986cf40>: null-object


    }


    }


    "Result" => <int64: 0x600000220a00>: 0


    }


    2017-05-27 21:37:49.133594+0200 orthographe[1915:114150] [MobileAssetError:29] Unable to copy asset information from https://mesu.apple.com/assets/for asset type com.apple.MobileAsset.TextInput.SpellChecker


     


    voiture existe bien dans la langue fr


     



     


     


    test "voitlure" langue fr :


     



     


    2017-05-27 21:39:31.945964+0200 orthographe[2024:115751] 0x600000156b00 Copy matching assets reply: XPC_TYPE_DICTIONARY  <dictionary: 0x600000156b00> { count = 1, transaction: 0, voucher = 0x0, contents =


    "Result" => <int64: 0x60000002a780>: 29


    }


    2017-05-27 21:39:31.947350+0200 orthographe[2024:115751] 0x600000156630 Daemon configuration query reply: XPC_TYPE_DICTIONARY  <dictionary: 0x600000156630> { count = 2, transaction: 0, voucher = 0x0, contents =


    "Dictionary" => <dictionary: 0x600000156a50> { count = 1, transaction: 0, voucher = 0x0, contents =


    "ServerURL" => <dictionary: 0x600000155be0> { count = 3, transaction: 0, voucher = 0x0, contents =


    "com.apple.CFURL.magic" => <uuid: 0x600000048d90> C3853DCC-9776-4114-B6C1-FD9F51944A6D


    "com.apple.CFURL.string" => <string: 0x600000048e20> { length = 30, contents = "https://mesu.apple.com/assets/"}


    "com.apple.CFURL.base" => <null: 0x10c53df40>: null-object


    }


    }


    "Result" => <int64: 0x60000002a960>: 0


    }


    2017-05-27 21:39:31.948197+0200 orthographe[2024:115751] [MobileAssetError:29] Unable to copy asset information from https://mesu.apple.com/assets/for asset type com.apple.MobileAsset.TextInput.SpellChecker


     


    fr: moi pas comprendre voitlure !


     


  • DrakenDraken Membre
    mai 2017 modifié #5

    Un moment j'ai pensé que le [MobileAssetError:29] se produisait parce que le simulateur n'avait pas le dictionnaire français installé, mais non..  D'ailleurs, l'erreur arrive même avec une vérification en langue "en".


    a


    Vérification "voiturel" en langue "en" (langue anglaise) :


    a


     



     


    2017-05-27 21:55:24.116440+0200 orthographe[2264:123627] 0x608000150ee0 Copy matching assets reply: XPC_TYPE_DICTIONARY  <dictionary: 0x608000150ee0> { count = 1, transaction: 0, voucher = 0x0, contents =


    "Result" => <int64: 0x608000222680>: 29


    }


    2017-05-27 21:55:24.118584+0200 orthographe[2264:123627] 0x6080001513b0 Daemon configuration query reply: XPC_TYPE_DICTIONARY  <dictionary: 0x6080001513b0> { count = 2, transaction: 0, voucher = 0x0, contents =


    "Dictionary" => <dictionary: 0x608000151460> { count = 1, transaction: 0, voucher = 0x0, contents =


    "ServerURL" => <dictionary: 0x608000151300> { count = 3, transaction: 0, voucher = 0x0, contents =


    "com.apple.CFURL.magic" => <uuid: 0x60800004ee20> C3853DCC-9776-4114-B6C1-FD9F51944A6D


    "com.apple.CFURL.string" => <string: 0x60800004f030> { length = 30, contents = "https://mesu.apple.com/assets/"}


    "com.apple.CFURL.base" => <null: 0x10cc5af40>: null-object


    }


    }


    "Result" => <int64: 0x6080002235c0>: 0


    }


    2017-05-27 21:55:24.119099+0200 orthographe[2264:123627] [MobileAssetError:29] Unable to copy asset information from https://mesu.apple.com/assets/for asset type com.apple.MobileAsset.TextInput.SpellChecker


     


    en: moi pas comprendre voiturel !



    Et le lien donné par Apple dans le message https://mesu.apple.com/assets/


     n'est pas accessible !  ???

  • LarmeLarme Membre

    Il me semble que c'est lié depuis iOS10 ou XCode 8, je sais pas que XCode est vraiment verbeux. C'est un peu gênant. 

    La solution brutale, c'est "OS_ACTIVITY_MODE = disable", mais ça vire tous les logs...


  • Je viens de tester avec le nouvel Xcode 8.3.3 disponible depuis le début du WWDC 2017 .. cela ne change rien. Toujours les mêmes messages verbeux !  >:(  

Connectez-vous ou Inscrivez-vous pour répondre.