2014-06-23 5 views
0

J'ai un petit problème qui me semble un peu bizarre. J'ai souvent utilisé NSString ou NSLog tout en ajoutant NSNumbers en plusieurs endroits:Comment ajouter un numéro à un NSURL? Trop d'arguments erreur

NSNumber *categoryId = [[NSNumber alloc]initWithInt:0]; 
NSURL *url = [NSURL URLWithString:@"http://shop.rs/api/json.php?action=getCategoryByCategory&category=%i",[categoryId integerValue]]; 

Maintenant Xcode me dit que je suis trop d'arguments. Qu'est-ce que je fais mal? La configuration d'un NSNumber dans NSStrings ou NSLogs fonctionne comme je l'ai fait ci-dessus.

Cordialement

Répondre

4

Ce qui est mal sur

NSURL *url = [NSURL URLWithString:@"http://shop.rs/api/json.php?action=getCategoryByCategory&category=%i",[categoryId integerValue]]; 

vous appelez URLWithString: puis passez dans une chaîne qui n'est pas formaté correctement. Si vous voulez le faire sur une seule ligne, alors vous devez utiliser stringWithFormat: comme

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://shop.rs/api/json.php?action=getCategoryByCategory&category=%i",[categoryId integerValue]]]; 

Parce qu'il est l'ajout d'un paramètre que vous ne pouvez pas créer une chaîne comme vous le feriez normalement avec @"some text" vous devez formater en utilisant le stringWithFormat: qui renverra un NSString * avec le texte tenu dans @"" et les paramètres que vous passez. Donc [NSString stringWithFormat:@"My String will come with %@", @"Apples"]; ceci fournirait un NSString avec "My String will come with Apples". Pour plus d'informations consultez le Apple Documentation for NSString and stringWithFormat:

+0

@Downvoter s'il vous plaît indiquer la raison pour downvote comme c'est correct. – Popeye

+0

Génial! Merci – r3n

+0

@ r3n pas de problème la chose importante est que cela fonctionne pour vous. – Popeye

2

Essayez ceci:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://shop.rs/api/json.phpaction=getCategoryByCategory&category=%i", [categoryId integerValue]]]; 

Au départ, le code a eu tort en raison de: "categoryId IntegerValue]" (j'ai oublié un '[').

+2

Je ne sais pas où mon commentaire initial a disparu, mais c'était initialement complètement faux. Cependant, alors que le code a été correct, il n'y a pas de description de ce qui était initialement faux et pourquoi le faire de cette façon. Note J'ai édité afin que je puisse enlever mon -1 fournira +1 si vous fournissez plus de détails – Popeye

+0

Initialement, le code était erroné à cause de: [categoryId integerValue], vous n'avez pas essayé de comprendre le code ... Mauvaise façon pour un développeur;) – StrawHara

1

Vous pouvez utiliser NSString pour former votre NSURL. Vous pouvez ensuite passer à votre URLWithString comme ci-dessous:

NSNumber *categoryId = [NSNumber numberWithInteger:0]; 
NSString *urlString = [NSString stringWithFormat:@"http://shop.rs/api/json.php?action=getCategoryByCategory&category=%i",[categoryId integerValue]]; 
NSURL *url = [NSURL URLWithString:urlString]; 
+0

il n'est pas nécessaire d'allouer categoryId ici. NSNumber * categoryId = [NSNumber numberWithInteger: 0]; – Yogendra

+0

// Merci étudiant. Édité .. – GenieWanted

+0

Great! Merci – r3n

Questions connexes