1

にあるフォルダから画像を取得したいNSLibraryDirectory

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES);
 NSString *documentsDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:str]];

 NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent: [@"images" stringByAppendingFormat:@"%d",[[NSUserDefaults standardUserDefaults] integerForKey:@"HighScore"]] stringByAppendingFormat:@".png"];
 img = [UIImage imageWithContentsOfFile:getImagePath];
 NSLog(@"img:%@", img);

これは私が使用しているコードです

getImagePath の印刷の説明:

/Users/Admin/Library/Application Support/iPhone Simulator/5.0/Applications/6842528E-9629-4DE7-96C1-A46AEB8A8EE0/ライブラリ/Thapa

そのはず:

getImagePath の印刷の説明:

/Users/Admin/Library/Application Support/iPhone Simulator/5.0/Applications/6842528E-9629-4DE7-96C1-A46AEB8A8EE0/ライブラリ/Thapa/images47.png

これを達成する方法がわからない、私が試したことは上記です。

前もって感謝します

4

2 に答える 2

2

まず、1 行のコード内であまりにも多くのことを行っています。そして、コードを書くためのベスト プラクティスは、物事をシンプルに保つことです (そうすれば、コードは自分だけでなく、それを見る他の人にも読みやすくなります)。

この行を見ると:

NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent: [@"images" stringByAppendingFormat:@"%d",[[NSUserDefaults standardUserDefaults] integerForKey:@"HighScore"]] stringByAppendingFormat:@".png"];

あまりにも多くのことが起こっています。

次のようなことをしてみませんか:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,     NSUserDomainMask, YES);
if(paths)
{
    NSString *documentsDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:str]];
    if(documentsDirectory)
    {
        NSInteger highScoreNumber = [[NSUserDefault standardUserDefaults] integerForKey: @"HighScore"];
        NSString * numberGraphicFilename = [NSString stringWithFormat: @"images%d.png", highScoreNumber ];
        if(numberGraphicFilename)
        {
            NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent: numberGraphicFilename];
            if(getImagePath)
            {
                img = [UIImage imageWithContentsOfFile:getImagePath];
            }
        }
    }
}

おまけ: これにより、エラー チェック/処理の概念がコードに導入されます。

書くコードは増えますが、読みやすく従うのははるかに簡単です。そして、このルートをたどることで、実際に問題が何であるかを切り分けることができるかもしれません.

于 2012-10-31T12:41:21.750 に答える
0

getImagePathを次のように変更します。

NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent: [@"YourSubFolderName/images" stringByAppendingFormat:@"%d",[[NSUserDefaults standardUserDefaults] integerForKey:@"HighScore"]] stringByAppendingFormat:@".png"];

したがって、コードは以下のようになります

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,     NSUserDomainMask, YES);
NSString *documentsDirectory= [paths objectAtIndex:0];

NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent: [@"YourSubFolderName/images" stringByAppendingFormat:@"%d",[[NSUserDefaults standardUserDefaults] integerForKey:@"HighScore"]] stringByAppendingFormat:@".png"];
img = [UIImage imageWithContentsOfFile:getImagePath];
NSLog(@"img:%@", img);
于 2012-10-31T12:41:15.440 に答える