2012-01-07 11 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

なぜ、あなたの 'initWithContentsOfFile'メソッドでエラーparamに' nil'を渡していますか?エラーで返される問題へのヒントがあるかもしれません。また 'fileConts'はあなたの' openFile'メソッドに入る前に長さや内容を持っていますか? –

+0

エラーのヒントありがとう...私はエラーを印刷し、ファイルが見つかりませんと言います。私はその道を辿ってファイルを見つけました。したがって、指定されたURLは正しいですが、アプリケーションはファイルを見つけることができません。助言がありますか? –

+0

私はすべての私の問題を解決することができました。 NSString * fileConts = [[NSString alloc] initWithContentsOfURL:URLエンコーディング:NSUTF8StringEncodingエラー:&エラー]; 'NSStringの代わりにURLを使用するだけです。ありがとう! –

答えて

0

私は私の問題を解決できました。 私の間違いは、今、私は満足している私は NSString *fileConts = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

で自分のコードを更新initWithContentsOfFile:(NSString *)

にしました! ありがとうございます。

0

handleOpenURLは、アプリケーションがすでに(バックグラウンドで)実行されている場合にのみ呼び出されます。

あなたが正しく受信ファイルを派遣、あなたはまた、アプリの起動時にそれを確認する必要があることを確認する:

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

それは1つのURLディスパッチャを持つことは良い考えですがhandleOpenURLとdidFinishLaunchingWithOptionsの両方から呼び出されます。

+0

これは正しくありません。 didFinishLaunchingで自分のメソッドを呼び出すコードをテストしました。しかし、その後私の方法は2回発射されます。したがって、 'handleOpenFile'は、アプリがバックグラウンドでない場合でも呼び出されることが判明しました。 –

関連する問題