Iphone 无法获取NSLibraryDirectory的完整路径

Iphone 无法获取NSLibraryDirectory的完整路径,iphone,directory,Iphone,Directory,我想从NSLibraryDirectory中的文件夹中获取图像 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES); NSString *documentsDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:str]];

我想从
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的说明:

/用户/管理员/库/应用程序支持/iPhone 模拟器/5.0/Applications/6842528E-9629-4DE7-96C1-A46AEB8A8EE0/Library/Thapa

应该是:

正在打印getImagePath的说明:

/用户/管理员/库/应用程序支持/iPhone 模拟器/5.0/Applications/6842528E-9629-4DE7-96C1-A46AEB8A8EE0/Library/Thapa/images47.png

如何做到这一点不知道,我所尝试的就是上面


提前感谢

获取图像路径更改为

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);

首先,你在一行代码中做了太多的事情。编写代码的最佳实践是保持简单(这样您和其他任何人都可以阅读您的代码)

当我看到这一行时:

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];
            }
        }
    }
}
好处:这还将错误检查/处理的概念引入到代码中


它需要编写更多的代码,但更易于阅读和遵循。你也许可以通过这条路线找出真正的问题所在。

这似乎更有意义,让我先试试。我有我的问题,为什么图像没有得到,因为userdefault没有得到值,而是增加了计数器,但为什么会这样呢?我有我的问题,为什么图像没有得到,因为userdefault没有得到值,而是增加了计数器,但为什么是这样呢?上面的代码将只检索最后保存的d图像。你想做什么。请解释一下,我正在试图获取数组中某个特定文件夹的所有图像。NSUserDefaults的值从1,2,3等开始。。。我说的对吗?然后循环,从1开始,到NSUserDefaults值结束