Cela doit être simple - sûrement que cette méthode est supposée fonctionner - mais je crois avoir un problème de deux octets à un octet.NSString stringWithCharacters Unicode Problème
Le but du code est de générer une chaîne de 0 caractères d'une certaine longueur (10 moins le nombre de chiffres qui seront ajoutés à la fin). Il ressemble à ceci:
const unichar zero = 0x0030;
NSString *zeroBuffer = [NSString stringWithCharacters:&zero length:(10 - [[NSString stringWithFormat:@"%i", photoID] length])];
Autre deuxième ligne (coulée la chose à l'adresse & zéro):
NSString *zeroBuffer = [NSString stringWithCharacters:(unichar *)&zero length:(10 - [[NSString stringWithFormat:@"%i", photoID] length])];
0x0030 est l'adresse du chiffre 0 dans la partie de base latine du unicode table.
Si photoID est 123, je veux que zeroBuffer soit @ "0000000". Qu'est-ce qu'il se termine en fait comme est un zéro, puis quelques caractères unicode fous le long des lignes de (ne sais pas comment cela va se montrer) ceci:
0 䪨 燱 ܾ 뿿;
Je suppose que je Les données traversent des frontières de caractères ou quelque chose. Je l'ai temporairement réécrit comme une chose subcorde stupide, mais cela semble être plus efficace.
Qu'est-ce que je fais mal?
Ah, ça explique tout, merci, plus de poil. Je devrais probablement avoir réalisé que "longueur" ne signifie pas la même chose que "compter". :) Votre solution alternative est parfaite pour mes besoins. FWIW Je me suis installé sur [@ "0000000000" substringToIndex: (10 -... qui a fonctionné mais qui n'était pas joli, mais il pourrait être le plus rapide et le moins gourmand en mémoire (et pas de chaînes mutables!) Si j'avais besoin d'un Personnage à part 0, c'était juste un caractère répétitif, et je savais qu'il avait une longueur maximale raisonnablement petite. –