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值结束