Метод класса iOS NSArray

У меня возникают проблемы с созданием строк класса NSArray с текстовыми полями для использования в других классах контроллеров представлений.

Позвольте мне показать вам, что я сделал:

Во-первых, в контроллере представлений настроек я собираю информацию в трех текстовых полях и сохраняю с помощью NSUserdefaults:

- (void)viewDidLoad
{
 // Get the stored data before the view loads
 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

 NSString *toEmail = [defaults objectForKey:@"toEmail"];
 NSString *ccEmail = [defaults objectForKey:@"ccEmail"];
 NSString *bccEmail = [defaults objectForKey:@"bccEmail"];

 // Update the UI elements with the saved data
 self.toEmailTextField.text = toEmail;
 self.ccEmailTextField.text = ccEmail;
 self.bccEmailTextField.text = bccEmail;

 [super viewDidLoad];

 [self sideBarButton];

 [self dismissTextFields];

}


- (********)toEmailAction:(id)sender {

 NSString *toEmail = self.toEmailTextField.text;

 // Store the data
 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

 [defaults setObject:toEmail forKey:@"toEmail"];

 [defaults synchronize];

 NSLog(@"Data saved");


}
- (********)ccEmailAction:(id)sender {

 NSString *ccEmail = self.ccEmailTextField.text;

 // Store the data
 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

 [defaults setObject:ccEmail forKey:@"ccEmail"];

 [defaults synchronize];

 NSLog(@"Data saved");
}
- (********)bccEmailAction:(id)sender {

 NSString *bccEmail = self.bccEmailTextField.text;

 // Store the data
 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

 [defaults setObject:bccEmail forKey:@"bccEmail"];

 [defaults synchronize];

 NSLog(@"Data saved");
}

Во-вторых, у меня есть еще один контроллер представлений с API-интерфейсом электронной почты, где мне нужно использовать строки с NSUserdefault в контроллере представлений настроек (помечены как текст 1, текст 2 и текст 3)

#pragma mark - Email

- (********)showEmail:(id)sender {

 // Email Subject
 NSString *emailTitle = @"GliLog Email";
 // Email Content
 NSString *messageBody = @"GliLog Email Test!!!";
 // To address
 NSArray *toRecipent = [NSArray arrayWithObject:@"text 1"];
 NSArray *ccRecipient = [NSArray arrayWithObject:@"text 2"];
 NSArray *bccRecipient = [NSArray arrayWithObject:@"text 3"];

 MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
 mc.mailComposeDelegate = self;
 [mc setSubject:emailTitle];
 [mc setMessageBody:messageBody isHTML:NO];
 [mc setToRecipients:toRecipent];
 [mc setCcRecipients:ccRecipient];
 [mc setBccRecipients:bccRecipient];

 // Present mail view controller on screen
 [self presentViewController:mc animated:YES completion:NULL];

}

- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
 switch (result)
 {
 case MFMailComposeResultCancelled:
 NSLog(@"Mail cancelled");
 break;
 case MFMailComposeResultSaved:
 NSLog(@"Mail saved");
 break;
 case MFMailComposeResultSent:
 NSLog(@"Mail sent");
 break;
 case MFMailComposeResultFailed:
 NSLog(@"Mail sent failure: %@", [error localizedDescription]);
 break;
 default:
 break;
 }

 // Close the Mail Interface
 [self dismissViewControllerAnimated:YES completion:NULL];
}

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

С наилучшими пожеланиями

2 ответа

У вас уже есть ответ в вашем первом представлении, когда читаете NSUserDefaults и сохраняете строки:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *toEmail = [defaults objectForKey:@"toEmail"];
NSString *ccEmail = [defaults objectForKey:@"ccEmail"];
NSString *bccEmail = [defaults objectForKey:@"bccEmail"];

Просто примените ту же самую вещь во втором контроллере просмотра,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSArray *toRecipent = [NSArray arrayWithObject:[defaults objectForKey:@"toEmail"]];
NSArray *ccRecipient = [NSArray arrayWithObject:[defaults objectForKey:@"ccEmail"]];
NSArray *bccRecipient = [NSArray arrayWithObject:[defaults objectForKey:@"bccEmail"]];


если вы храните данные в NSUserDefaults, просто получите от него значение.

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 NSString * toEmail = [defaults objectForKey:@"toEmail"];
 NSString * ccEmail = [defaults objectForKey:@"ccEmail"];

Хороший и простой учебник о NSUserDefaults

licensed under cc by-sa 3.0 with attribution.