Если вы не работаете с пустым массивом, itertools предоставляет функцию под названием chain (), которую можно использовать для выравнивания списка:
from itertools import chain
array = list(chain(*matrix))
Вместо длинных и запутанных URL, которые вы обычно видите, вы можете создавать ссылки в App Store, которые намного проще и более логичны. В iTunes Store есть скрытый формат URL, который намного логичнее. В зависимости от того, на что вы ссылаетесь, вам просто нужно создать URL в одном из следующих форматов:
Просто включите URL этого формата в текст создаваемого вами электронного письма.
(обратите внимание, что пробелы могут вызвать проблемы, но я обнаружил, что исключение их полностью работает для меня - http: // itunes.
В OS 3.0 вы можете использовать инфраструктуру MessageUI, чтобы сделать это, не выходя из приложения (используя код Джейн в качестве запасного варианта для устройств до версии 3.0):
- (void)sendEmail
{
NSString* body = [NSString stringWithFormat:@"Get my app here - %@.\n",myUrl];
#if __IPHONE_OS_VERSION_MIN_REQUIRED <= __IPHONE_2_2
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass != nil && [mailClass canSendMail])
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
picker.subject = @"Get my app";
[picker setToRecipients:[NSArray arrayWithObject:@"xxx@wibble.com"];
[picker setMessageBody:body isHTML:NO];
[self presentModalViewController:picker animated:NO];
[picker release];
} else {
[NSThread sleepForTimeInterval:1.0];
NSString* crlfBody = [body stringByReplacingOccurrencesOfString:@"\n" withString:@"\r\n"];
NSString* escapedBody = [(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)crlfBody, NULL, CFSTR("?=&+"), kCFStringEncodingUTF8) autorelease];
NSString *mailtoPrefix = [@"mailto:xxx@wibble.com?subject=Get my app&body=" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// Finally, combine to create the fully escaped URL string
NSString *mailtoStr = [mailtoPrefix stringByAppendingString:escapedBody];
// And let the application open the merged URL
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailtoStr]];
}
#endif
}
#pragma mark -
#pragma mark Mail Composer Delegate
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
if (result == MFMailComposeResultFailed) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[error localizedDescription] message:[error localizedFailureReason] delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"OK") otherButtonTitles:nil];
[alert show];
[alert release];
}
[self dismissModalViewControllerAnimated:YES];
}
Обратите внимание, что ваш класс должен принять Протокол MFMailComposeViewControllerDelegate
. Вы также можете включать вложения, использовать HTML в теле и т. Д.