2016-10-27 10 views
1

В настоящее время я пытаюсь передать данные из одного ViewController в SMS ViewController, предоставленный Apple (через MFMessageComposeViewController), используя NSUserDefaults.NSUserDefaults удаляет пространство при передаче другому VC

Я успешно передаю имя человека текстовому полю SMS в моем MFMessageComposeViewController, но по какой-то причине пространство между именами и именем человека удаляется (т. Е. Вместо Джона Смита оно появляется в текстовое поле как johsmith).

Я вошли все мои ценности, и они показывают, что действительно существует пробел между именем и фамилией (например, распечатав John Smith)

Ниже мой код, надеюсь, кто-то сталкивался с этим странным вопрос или может указать мне в правильном направлении. Благодаря!!!

-(void)launchMessengerContacts { 

    if(![MFMessageComposeViewController canSendText]) { 

    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; 

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Error" message:@"Your device doesn't support SMS!" preferredStyle:UIAlertControllerStyleAlert]; 


    UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { 

    }]; 

    [alertController addAction:confirmAction]; 
    [self presentViewController:alertController animated:YES completion:nil]; 
    return; 
} 

NSString *message = @"Hey! I'm inviting you to play this game!"; 


MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init]; 
messageController.messageComposeDelegate = self; 
[messageController setBody:message]; 

NSUserDefaults *contactsUD = [NSUserDefaults standardUserDefaults]; 

[[NSUserDefaults standardUserDefaults] synchronize]; 

NSMutableString *contactName = [contactsUD  objectForKey:@"contactName"]; 

NSLog(@"Contact Name: %@", contactName); 

messageController.recipients = [NSArray arrayWithObjects:contactName, nil]; 

NSLog(@"Message Controller Recs: %@", messageController.recipients); 

[self presentViewController:messageController animated:YES completion:nil]; 
} 

В моей didselectrowatindexpath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: 
(NSIndexPath *)indexPath { 
AddressBookTableViewCell *cell = [tableView 
cellForRowAtIndexPath:indexPath]; 


NSUserDefaults *contactUD = [NSUserDefaults standardUserDefaults]; 
[contactUD setObject:cell.contactLabel.text forKey:@"contactName"]; 
NSLog(@"cell : %@", cell.contactLabel.text); 

NSLog(@"NSUserDefaults is %@", contactUD); 
NSLog(@"User Defaults Contact Name: %@", [contactUD 
objectForKey:@"contactName"]); 

[self launchMessengerContacts]; 
} 
+0

Прямо здесь: NSMutableString * contactName = [contactsUD objectForKey: @ "contactName"]; NSLog (@ "Контактное лицо:% @", contactName); Вы получаете «Джон Смит»? Также удалите [[NSUserDefaults standardUserDefaults] synchronize]; сделайте это выше, чем [self launchMessengerContacts]; –

+2

FYI - это неуместное использование NSUserDefaults. – rmaddy

+0

@AndrewVeresov Да, я получаю консоль для печати «Контактное имя: Джон Смит» Любые идеи о том, почему он не передает эту ценность? – a2b123

ответ

0

Из документации MFMessageComposeViewController:

Каждая строка в массиве должна содержать номер телефона предполагаемого получателя .

Поэтому вам нужно добавить номер телефона, а не имя.

+0

Да, я в конце концов передам номер телефона, но у меня возникли проблемы с получением правильных телефонных номеров в соответствии с правильными контактами (поскольку для любого данного контакта имеется несколько телефонных номеров) – a2b123

+0

'MFMessageComposeViewController' не сделает этого за вас, вы Для этого вам потребуется использовать инфраструктуру контактов iOS. См. [CNContactStore] (https://developer.apple.com/reference/contacts/cncontactstore). – Yonat