2016-08-01 1 views
1

J'essaie d'utiliser MFMessageComposer pour pré-remplir des sms pour l'utilisateur. J'essaie d'utiliser une variable qui est stockée dans un tableau mutable et utiliser ce numéro pour pré-remplir le numéro de téléphone. Cependant, cela ne fonctionne pas avec le code ci-dessous sur la partie destinataire. J'ai essayé de le changer en chaîne, en l'ajoutant au tableau. Le téléphone ne fait rien. Toutefois, si je fais un numéro manuel en utilisant @ [@ "123132131235"]; pour les destinataires, cela fonctionnerait.Comment faire des destinataires dans MFMessageComposeViewController en utilisant une variable

- (IBAction)smsSend:(id)sender { 

    { 
     MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; 
     [controller setMessageComposeDelegate:self]; 
     if([MFMessageComposeViewController canSendText]) 
     { 

      controller.recipients = [[NSArray alloc] initWithObjects:[Detail valueForKey:@"Phone"], nil]; 

      NSLog(@"%@",[Detail valueForKey:@"Phone"]); 

      controller.body = @"Hello testing"; 

      [self presentViewController:controller animated:YES completion:NULL]; 

     } else { 
      NSLog(@"cannot send"); 
     } 
    } 
} 

Aidez-moi s'il vous plaît.

Cheers, Tony.

+1

Pouvez-vous faire NSLog (@ "% @", [Détail valueForKey: @ "Phone"]) 'et voir ce que vous obtenez? –

+0

Qu'est-ce que '[Detail valueForKey: @" Phone "]'? Quel genre d'objet est-il retourné? – Larme

+0

quand je fais NSLog (@ "% @", [Détail valueForKey: @ "Phone"]) je reçois le bon numéro comme 123456789. –

Répondre

0

Essayez ceci:

- (IBAction)smsSend:(id)sender 
{ 
{ 
    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; 
    [controller setMessageComposeDelegate:self]; 
    if([MFMessageComposeViewController canSendText]) 
    { 
     controller.recipients = [NSArray arrayWithObjects:[Detail valueForKey:@"Phone"], nil]; 

     controller.body = @"Hello testing"; 

     [self presentViewController:controller animated:YES completion:NULL]; 
    } 
    else 
    { 
     NSLog(@"cannot send"); 
    } 
} 
} 

Le seul changement que je l'ai fait est l'allocation de tableau de destinataire. Le tableau des destinataires n'est pas le tableau que vous possédez. Au lieu de [NSArray alloc], vous devez initialiser le tableau avec des objets.

initWithObjectinitWithObject renvoie un tableau avec un nombre de conservation de 1, c'est-à-dire que vous possédez le groupe et vous devez le libérer à un moment donné pour éviter les fuites de mémoire.

arrayWithObject retourne un tableau autoreleased de sorte que vous n'avez pas à vous soucier de le relâcher lorsque vous n'avez plus besoin (mais si vous stockez dans une variable d'instance, vous devez le conserver pour éviter la piscine autorelease de le libérer

+0

Cela ne fonctionne pas si vous supprimez l'alloc. Il dit "Aucune méthode de classe connue pour sélecteur avec 'initWithObjects'" –

+0

Désolé, mon erreur, j'ai édité le code pouvez-vous vérifier maintenant? –

+0

J'ai essayé et j'ai encore essayé. Il clignote juste un peu et retourne au même écran. –