2011-10-14 5 views
0

Chers cerveaux de stackoverflow, j'ai encore des problèmes avec iOS ... Je suis nouveau à tout cela.iOS openURL basé sur la valeur de cellule de table

J'essaye d'ouvrir un safari avec une URL, qui inclut un paramètre d'URL basé sur la valeur de la cellule de table. Donc, si la cellule de table contient "pile", je veux aller à "http://stack.com?param=stack". Cela devrait être une tâche simple, mais j'ai du mal à la faire fonctionner.

Il échoue avant même que j'arrive à la ligne UIApplication ... donc je ne sais même pas si cela va fonctionner. Je reçois cette erreur:

2011-10-14 10:18:32.297 NPT[1085:207] *** Terminating app due to uncaught exception 
'NSInvalidArgumentException', reason: '*** initialization method - 
initWithCharactersNoCopy:length:freeWhenDone: cannot be sent to an abstract object of 
class NSCFString: Create a concrete instance!' 

Lorsque j'utilise ce code:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSString* thisValue = [[[self.searchResults cellForRowAtIndexPath:indexPath] textLabel] text]; 

    NSString* thisPlateURL = [ 
          [NSString new] 
          initWithFormat:@"http://www.site.co.uk?&regno=%@", thisValue 
          ]; 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: thisPlateURL]]; 

    [thisPlateURL release]; 
} 

Je devine que c'est quelque chose à voir avec moi pas correctement mise ThisValue, et je suis sûr que je vais donne moi un coup de pied si quelqu'un le voit, mais je ne vois pas quel est le problème.

Aidez s'il vous plaît!

Répondre

2

Je pense que le problème est dans l'initialisation NSString:

essayer avec:

NSString* thisPlateURL = [NSString stringWithFormat: @"http://www.site.co.uk?&regno=%@", thisValue]; 
+0

de sorte que l'habitude besoin de libérer alors le sera, comme je ne l'ai pas dit alloc ou nouveau? –

+0

Je pense que vous pouvez libérer thisPlateURl, parce que c'est une instance d'un objet NSString (pointeur vers une instance, bien sûr). Vous n'écrivez pas alloc ni new, mais la méthode NSString statique le fait pour vous. –

0

Vous initialisez NSString dans une mauvaise façon - [NSString new], vous devez utiliser [NSString alloc] à la place

Questions connexes