2

在 iOS 6 上,这段代码可以正常工作:

- (NSString*)cLocalImageName
{
     [self willAccessValueForKey:@"cLocalImageName"];
     NSString*pathToImage;
     if ([self.cIsUserCreated boolValue]) {
         pathToImage =  [self primitiveValueForKey:@"cLocalImageName"];
     }else{
         pathToImage = [[NSBundle mainBundle] pathForResource:[self primitiveValueForKey:@"cLocalImageName"] ofType:@".png"];
     }
     [self didAccessValueForKey:@"cLocalImageName"];
     return pathToImage;
}

即这一行总是返回正确的文件路径:

 pathToImage = [[NSBundle mainBundle] pathForResource:[self primitiveValueForKey:@"cLocalImageName"] ofType:@".png"];

但是,在 iOS 5 上,该行总是返回 nil,而我必须调用:

 pathToImage = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",[self primitiveValueForKey:@"cLocalImageName"]]];

谁能告诉我为什么这是 iOS 5 上的问题?

我已经排除的事情:

• [self primitiveValueForKey:@"cLocalImageName"] 没有返回零。

• 构建应用程序后,.png 对象实际上存在于已编译的.app 包中。

4

1 回答 1

12

这行不应该:

pathToImage = [[NSBundle mainBundle] pathForResource:[self primitiveValueForKey:@"cLocalImageName"] ofType:@".png"];

是这样的:

pathToImage = [[NSBundle mainBundle] pathForResource:[self primitiveValueForKey:@"cLocalImageName"] ofType:@"png"];

?

于 2012-10-30T21:15:42.550 回答