Comment convertir une Chaîne de caractères à une CString de la Swift de la Langue?
Je suis en train d'utiliser dispatch_queue_create avec une Chaîne dynamique que je suis de la création à l'exécution, en tant que premier paramètre. Le compilateur se plaint parce qu'il s'attend à une chaîne c standard. Si je passe à un moment de la compilation chaîne définie par l'erreur disparaît. Quelqu'un peut me dire comment faire pour convertir une Chaîne de caractères d'une chaîne c standard?
OriginalL'auteur banDedo | 2014-06-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir un
CString
comme suit:EDIT: Beta 5 mise à Jour -
bridgeToObjectiveC()
n'existe plus (merci @Sam):(str as NSString).UTF8String
Merci, mis à jour réponse!
Notez que cette solution est également nécessaire si vous souhaitez utiliser %s mise en forme de votre Chaîne(format:,args:...) formateur. La documentation suggère que vous ne devriez pas utiliser %s, mais bien sûr, parfois vous avez (par exemple, l'insertion d'une chaîne de valeur dans une version localisée de message d'erreur). Donc:
String("Player %s not found", player.name)
vous donnera la poubelle (car le joueur.le nom est un Swift de la Chaîne d'objet, pas une chaîne se terminant par null) maisString("Player %s not found", (player.name as NSString).UTF8String)
va produire de la bonté.OriginalL'auteur Cezary Wojcik
Il y a aussi la Chaîne.withCString (), qui pourrait être plus approprié, en fonction de votre cas d'utilisation. Exemple:
Mise à jour de Swift 2.2: Swift 2.2 automatiquement les ponts de la Chaîne de chaînes C, de sorte que l'exemple ci-dessus est maintenant un simple:
Beaucoup plus facile ;->
OriginalL'auteur hnh
Swift ponts de Corde et NSString. Je crois que cela peut être possible alternative à Cezary réponse:
La documentation de l'API:
Comme vous pouvez le voir, la fonction renvoie une CString struct (-> CString). Veuillez expliquer.
Toutes mes excuses. Vous êtes correct. Il s'avère que j'ai besoin est l'exact opposé de ce que j'ai demandé, juste un simple vieux vanille c de la chaîne. Désolé pour la confusion, votre réponse est bonne, comme demandé. J'ai donné un upvote pour répondre à la question posée.
Donc, la réponse qui a été accepté n'est pas ce dont vous avez besoin.
OriginalL'auteur mbeaty
Swift 3 version @mbeaty dire:
De pomme d'API:
OriginalL'auteur Leo