gpt4 book ai didi

UIImage imageWithContentsOfFile : not working on iOS8

转载 作者:行者123 更新时间:2023-12-05 01:03:08 26 4
gpt4 key购买 nike

当我在 iOS8 beta3 和 beta5 上测试我的应用程序时,我发现了一个关于 [UIImage imageWithContentsOfFile:] 的错误。

当图像资源存储在主包的子包中时,如果我们通过以下方法初始化 UIImage,它将返回 nil:

NSString *testBundlePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"bundle”];
NSBundle *bundle = [NSBundle bundleWithPath:testBundlePath];
NSString *path = [bundle pathForResource:@"play.png" ofType:nil];

UIImage *image = [UIImage imageWithContentsOfFile:path]; //iOS8 image = nil, iOS7 image != nil

但是当图片资源存放在main bundle中时,UIImage初始化可以通过以下方法成功:
NSString *path = [[NSBundle mainBundle] pathForResource:@"play.png" ofType:nil];

UIImage *image = [UIImage imageWithContentsOfFile:path]; //iOS8 and iOS7 image != nil

我们在iOS8 beta3下发现了这个问题,在iOS8 beta 5下依然存在。
The Demo app directory structure was below:
XXX.app
|----test~ipad.bundle
|----play.png
|----test~iphone.bundle
|----play.png
|----play.png
|----play~iphone.png
|----play~ipad.png
......

有没有人有同样的问题?我认为这是iOS8上的一个bug,因此,许多应用程序都使用bundle来组织资源,例如图像。但现在,这个漏洞会让成千上万的应用变得丑陋难用。我们真的希望苹果能在下一个版本中修复这个错误,否则我所有的应用程序都必须为这个错误开发一个新版本!

最佳答案

它实际上并没有损坏,您只是将其发送到错误的路径。
我猜您正在使用模拟器,并在您的应用程序中的某处保存了一个文件,然后记下了该文件的完整路径。但是,当您重建应用程序时,已安装应用程序的 UUID 会发生变化,并且您保存的路径不再有效(即使文件仍然存在)。您可以通过检查 [[NSFileManager defaultManager] currentDirectoryPath] 来查看您当前的事件路径。请注意,每次重建和重新部署应用程序时,该值都会更改。

要访问您的实际文件,您需要执行以下操作:

NSString *image = @"myImage.png";

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cache = [paths objectAtIndex:0];
NSString *fullPath = [NSString stringWithFormat:@"%@/%@", cache, image];
UIImage *image = [UIImage imageWithContentsOfFile:fullPath];

关于UIImage imageWithContentsOfFile : not working on iOS8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25279239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com