J’ai une requête sqlite assez longue :
Comment puis-je briser dans un certain nombre de lignes pour le rendre plus facile à lire ? Si je fais ce qui suit :
J’obtiens une erreur.
Est-il possible d’écrire des requêtes sur plusieurs lignes ?
J’ai une requête sqlite assez longue :
Comment puis-je briser dans un certain nombre de lignes pour le rendre plus facile à lire ? Si je fais ce qui suit :
J’obtiens une erreur.
Est-il possible d’écrire des requêtes sur plusieurs lignes ?
Il y a deux façons de diviser chaînes de caractères sur plusieurs lignes:
Toutes les lignes en C peut être divisé en plusieurs lignes à l'aide de \.
Plaine C:
char *my_string = "Line 1 \
Line 2";
Objective-C:
NSString *my_string = @"Line1 \
Line2";
Il y a une meilleure approche qui fonctionne pour les chaînes.
Plaine C:
char *my_string = "Line 1 "
"Line 2";
Objective-C:
NSString *my_string = @"Line1 "
"Line2"; // the second @ is optional
La deuxième approche est la meilleure, car il n'y a pas beaucoup d'espaces inclus. Pour une requête SQL cependant, les deux sont possibles.
REMARQUE: Avec un #define, vous devez ajouter un supplément '\' pour concaténer deux chaînes de caractères:
Plaine C:
#define kMyString "Line 1"\
"Line 2"
Il y a un truc que vous pouvez faire avec le pré-processeur.
Il a le potentiel sur les côtés qu'il va s'effondrer espace blanc, et pourrait être source de confusion pour les gens qui lisent le code.
Mais, il a le côté positif que vous n'avez pas besoin d'échapper les guillemets à l'intérieur.
#define QUOTE(...) #__VA_ARGS__
const char *sql_query = QUOTE(
SELECT word_id
FROM table1, table2
WHERE table2.word_id = table1.word_id
ORDER BY table1.word ASC
);
le préprocesseur se transforme en:
const char *sql_query = "SELECT word_id FROM table1, table2 WHERE table2.word_id = table1.word_id ORDER BY table1.word ASC";
J'ai utilisé cette astuce quand j'ai écrit quelques tests unitaires qui ont de grandes chaînes de caractères littérales contenant JSON. Cela signifiait que je n'avais pas à échapper à chaque caractère de guillemet \".
Vous pouvez également aller dans XCode -> Préférences, sélectionnez l'onglet Indentation et activez l'habillage de ligne.
De cette façon, vous n'aurez plus à taper quoi que ce soit, et cela fonctionnera pour les choses que vous avez déjà écrites. :-)
Une chose ennuyante cependant est ...
if (you're long on indentation
&& short on windows) {
then your code will
end up squished
against th
e side
li
k
e
t
h
i
s
}
J'ai ce problème tout le temps, j'ai donc fait un petit outil pour convertir le texte en une chaîne multi-lignes Objective-C échappée:
http://multilineobjc.herokuapp.com/
J'espère que cela vous fait gagner du temps.
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.