2016-10-27 5 views
1

현재 NSUserDefaults를 사용하여 한 ViewController에서 Apple에서 제공 한 SMS ViewController (MFMessageComposeViewController를 통해)로 데이터를 전달하려고합니다.NSUserDefaults가 다른 VC로 넘어갈 때 공간을 삭제합니다.

나는 사람의 이름을 내 MFMessageComposeViewController 내의 SMS 텍스트 필드에 성공적으로 전달하지만, 사람과 성 사이의 공간이 삭제됩니다 (예 : John Smith 대신 johsmith와 같은 텍스트 필드).

내 모든 값을 로그 아웃하고 그들이 다음

내 코드 (즉, 존 스미스를 인쇄)에 이름과 성 사이에 공백이 실제로 있다는 것을 보여, 다른 잘하면 사람이 이상한가 발생했습니다 문제를 제기하거나 올바른 방향으로 나를 가리킬 수 있습니다. 감사!!! MFMessageComposeViewController 문서에서

- (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); "John Smith"가 있습니까? [[NSUserDefaults standardUserDefaults] synchronize]도 제거하십시오. 이것을 더 높게 만든 다음 [self launchMessengerContacts]; –

+2

참고 - 이것은 NSUserDefaults의 부적절한 사용입니다. – rmaddy

+0

@AndrewVeresov 예 "연락처 이름 : John Smith"를 출력하는 콘솔을 얻는 중 왜 그 값을 전달하지 않는지에 대한 아이디어가 있습니까? – a2b123

답변

0

: 내 didselectrowatindexpath에서

-(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]; 
} 

받는 사람의 전화 번호를 포함해야 배열의 각 문자열입니다.

그래서 이름이 아닌 전화 번호를 추가해야합니다.

+0

예 결국 전화 번호를 전달할 것입니다. 그러나 정확한 연락처와 일치하는 올바른 전화 번호를 얻는 데 문제가 있습니다. (특정 연락처에 대해 여러 전화 번호가 있기 때문에) – a2b123

+0

'MFMessageComposeViewController'는 이를 위해 iOS 연락처 프레임 워크를 사용해야합니다. [CNContactStore] (https://developer.apple.com/reference/contacts/cncontactstore)를 참조하십시오. – Yonat