【Objective-C】アプリ内保存した画像のパスがpathForResourceで取れない

【Xcode5.1.1 + iOS 7.1 + MacOX10.9.4】

以前、iOSアプリ内に画像を保存するという記事を書いて、その後、保存した画像の参照を[UIImage imageNamed]から、[[NSBundle mainBundle] pathForResource:]に変更したら、保存直後の画像参照ができなくなった。

で、いろいろテストしてみると、一度アプリを終了してからの画像は参照出来るので、NSBundleはアプリ起動時の情報しか持っていないのではないかと思われます。とりあえず動かすために、こんなコードを書いて回避してるんだけど、NSBundleを強制的に更新するとか、何かいい方法はないでしょうか?NSBundleを調べてみたけどよくわからなかったので。

    NSArray *phrases = [imageName componentsSeparatedByString:@".png"];
    NSString *filename = [phrases objectAtIndex:0];
    NSString *path= [[NSBundle mainBundle] pathForResource:filename ofType:@"png"];
    
    //アプリ内保存した直後の画像は、path が nullになる
    NSLog(@"path >> %@",path);
    
    //保存直後の画像はNSBundleでパスが取れないための対処(アプリが再起動しないとダメみたい)
    UIImage *iconImage;
    
    if (path == NULL) {
        iconImage = [UIImage imageNamed:imageName];
        
    } else {
        iconImage = [[UIImage alloc] initWithContentsOfFile:path];
    }

※ imageNameには、”../Documents/icon20140912171442.png”のようなパスが入っている。

【参考】
NSBundleクラス | Second Flush

「【Objective-C】アプリ内保存した画像のパスがpathForResourceで取れない」への1件のフィードバック

コメントは停止中です。