【发布时间】:2012-10-30 20:30:23
【问题描述】:
在 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"] 没有返回 nil。
• 构建应用后,.png 对象实际上存在于已编译的 .app 包中。
【问题讨论】:
-
我什至懒得问为什么primitiveValueForKey会返回一个不是原始值的NSString。
-
这是一个核心数据的东西,我认为他们使用的原始意义与规范不同。
标签: objective-c ios nsbundle