2012-01-07 2 views
0

Я борюсь с обработкой файлов на iOS. Я уже мог назначить свой тип файла iOS, и я могу запустить приложение из почты с помощью специального файла. Мое приложение запускает и я стреляя этот метод:Открыть файлы с почтой

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
{ 
    if([url isFileURL]) 
    { 
     NSString *fileConts = [[NSString alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@", url] encoding:NSUTF8StringEncoding error:nil]; 
     [self.viewController openFile:fileConts]; 
     fileConts = nil; 
    } 
    return YES; 
} 

openFile:(NSString) Метод объявлен в ViewController и устанавливает значение TextView (на данный момент). Этот метод работает отлично. Я тестировал его через [self.viewController openFile:@"test"];.

Но когда мое приложение запускается с прикрепленным файлом, textView остается пустым. Кажется, что он не принимает строковое значение или не может прочитать строковое значение.

+1

Почему вы передаете 'nil' для параметра ошибки в вашем методе' initWithContentsOfFile'? может возникнуть полезный намек на то, что ваша проблема будет возвращена при ошибке. Кроме того, есть ли у 'fileConts' длина или содержание до того, как вы войдете в свой метод' openFile'? –

+0

Спасибо за отзыв об ошибке ... Я напечатал ошибку, и он говорит, что файл не найден. Я пошел по пути и нашел файл. Таким образом, данный URL-адрес правильный, но приложение не может найти файл. Какие-либо предложения? –

+0

Я мог бы решить все мои проблемы. Я просто шляпу для 'NSString * fileConts = [[NSString alloc] initWithContentsOfURL: url encoding: NSUTF8StringEncoding error: & error];' используя url вместо NSString. Благодаря! –

ответ

0

Я мог бы решить свою проблему. Моя ошибка была initWithContentsOfFile:(NSString *)

Я обновил свой код с NSString *fileConts = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

Теперь я счастлив! Спасибо за помощь.

0

handleOpenURL будет вызываться только в том случае, если приложение уже работает (в фоновом режиме).

Чтобы убедиться, что вы правильно направить входящие файлы, вам также необходимо проверить его на запуск приложения:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey]; 
// Process url here 
} 

Это хорошая идея, чтобы иметь один URL диспетчеру называется как из handleOpenURL и didFinishLaunchingWithOptions.

+0

Это неправильно. Я проверил некоторый код, который вызывает мой метод на didFinishLaunching. Но тогда мой метод дважды срабатывает. Итак, оказалось, что 'handleOpenFile' вызывается, даже если приложение не находится в фоновом режиме. –

Смежные вопросы