39 votes

Décomposer NSString formaté long sur plusieurs lignes

Compte tenu de la ligne suivante de code Objective-C:

[NSString stringWithFormat:@"\n Elapsed Time  \n Battery Level:  \n Torque:  \n Energy Used  \n Energy Regenerated:\n Cadence: \n Battery Temp: \n Motor Temp: \n Incline: \n Speed MPH: \n Speed KPH:\n Avg Speed MPH: \n Avg Speed KPH:\n Distance Miles:\n Distance Km: \n Time Date Stamp:\n"];

Dans Xcode, ou tout éditeur de code, est-il possible d'éviter d'avoir une très longue chaîne qui doit être lu par le défilement à travers elle dans l'éditeur?

Est-il un moyen de les décomposer en plusieurs lignes? J'ai constaté que si je tente pour ce faire, le code ne compile pas, parce que le compilateur arrive à la fin d'une ligne et ne pas voir le guillemet de fermeture (") pour la chaîne.

Quelqu'un sait-il un moyen de contourner cela?

91voto

Joe Points 37343

Oui il y a. Les chaînes adjacentes seront concaténées pour vous par le compilateur.

 NSString *info = [NSString stringWithFormat:@"\n Elapsed Time  \n"
                      "Battery Level:  \n"
                      "Torque:  \n"
                      "Energy Used  \n"
                      "Energy Regenerated:\n Cadence: \n"
                      "Battery Temp: \n"
                      "Motor Temp: \n"
                      "Incline: \n Speed MPH: \n" 
                      "Speed KPH:\n"
                      "Avg Speed MPH: %f \n"
                      "Avg Speed KPH:\n"
                      "Distance Miles:\n"
                      "Distance Km: \n"
                      "Time Date Stamp:\n"];
NSLog(info);
 

15voto

matm Points 4329

Ce n'est plus une caractéristique intéressante qu'une réponse utile, mais...

    // your code goes with that indentation (1 tab = 4 spaces)
    NSString *myString = @"first line\
second line\
third line\
...\
last line";
    // next lines of codes

Mais vous avez vraiment à l'esprit la mise en retrait, faisant NSLog(@"%@", myString) ci-dessus, aurait pour résultat: first linesecond linethird line...last line.

Maintenant, considérons cet exemple:

    // your code goes with that indentation (1 tab = 4 spaces)
    NSString *myString = @"first line\
    second line\
    third line\
    ...\
    last line";
    // next lines of codes

cela donnerait: first lineXsecond lineXthird lineX...Xlast line", où ces méchants X serait remplacé par 4 espaces (tableur avait 4 espaces dans ce cas, et je ne pouvais pas obtenir le droit de formatage, désolé). Ainsi, un espace supplémentaire peut vraiment vous empêcher d'obtenir les résultats escomptés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X