Пишите .kml файлы в iOS - PullRequest
       53

Пишите .kml файлы в iOS

1 голос
/ 02 апреля 2012

Я хотел бы знать, как я могу записать в файл в приложении. Вот что я пытаюсь сделать, это то, что я генерирую KML (используя класс XMLWriter из https://github.com/skjolber/xswi).. Я могу записать KML, все хорошо, теперь я должен сделать то же самое, этот же KML в файл .kml. , а затем отправьте его по электронной почте на какой-либо адрес.

Отправка по электронной почте не проблема, я хотел знать, как записать этот KML в файл .kml, а затем получить его для отправки по электронной почте. Может кто-нибудь помочь мне с фрагментом кода.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Это учебное пособие сделало это, больше чем помогло .. Код для создания файла .kml:

NSFileManager *filemgr;
NSData *databuffer;
NSString *dataFile;
NSString *docsDir;
NSArray *dirPaths;

filemgr = [NSFileManager defaultManager];
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
dataFile = [docsDir stringByAppendingPathComponent: @"datafile.kml"];
databuffer = [[xmlWriter toString] dataUsingEncoding: NSASCIIStringEncoding];
[filemgr createFileAtPath: dataFile contents: databuffer attributes:nil];

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

NSFileManager *filemgr;
NSString *dataFile;
NSData *databuffer;
NSString *docsDir;
NSArray *dirPaths;

filemgr = [NSFileManager defaultManager];

// Identify the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];

// Build the path to the data file
dataFile = [docsDir stringByAppendingPathComponent: @"datafile.kml"];
databuffer = [filemgr contentsAtPath: dataFile];
0 голосов
/ 02 апреля 2012

Я полагаю, что у вас есть все содержимое в виде строки, если вы можете сохранить его в файл .kml примерно так:

 NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                                                      NSUserDomainMask, YES);   
NSString* documentsDirectory = [paths objectAtIndex:0];     
NSString* fname = [tmp_FileName stringByAppendingFormat: @".kml" ]; 
NSString* filenameStr = [documentsDirectory
                          stringByAppendingPathComponent:fname];
[yourKMLString writeToFile: filenameStr atomically: YES];
...