【发布时间】:2012-11-20 02:44:14
【问题描述】:
我正在尝试将文件扩展名附加到子类 NSTextFieldCell 返回的 stringValue
我已经尝试了所有我知道的并且可以在互联网上找到的东西,但这只是让我头疼
方法如下:
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
NSMutableString *filename = [[NSMutableString alloc] init];
[filename appendString:self.stringValue];
NSString *iconFileName = [[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:filename] stringByAppendingPathExtension:@"png"];
NSLog(@"%@", iconFileName);
}
返回的值是没有扩展名的! 我还尝试了以下方法:
filename = [NSString stringWithFormat: @"%@.png", filename];
这将返回不带“.png”的“文件名”字符串
同样:
filename = [filename stringByAppendingString: @".png"];
只返回“文件名”
这个单元格所属的表格列绑定了一个NSObject,向该列发送数据的方法如下:
- (NSString *) nationString {
NSMutableString *string = [[NSMutableString alloc] init];
int index = 0;
if (nationAddress && nationAddress > 0x0) {
index = [[[[controller database] nationsAddressIndex] valueForKey:[NSString stringWithFormat:@"%lli", nationAddress]] intValue];
Nation *nationality = [[[controller database] nations] objectAtIndex:index];
[string appendString:[nationality name]];
}
else {
[string appendString:@"---"];
}
return string;
}
有人知道为什么会发生这种情况,或者可以提出任何替代方案吗? 任何帮助将不胜感激 谢谢
【问题讨论】:
-
如果文件名是 NSString,
filename = [NSString stringWithFormat: @"%@.png", filename];应该可以工作。您似乎已将其声明为 NSMutableString,这可能会导致编译问题,但仍应执行正常。我怀疑你没有以某种方式正确显示你的价值观。 -
谢谢,我尝试过使用 NSString 和 NSMutableString,两者的行为相同。文件名是 NSMutableString,如第一段代码所示,它来自 NSString 类型的 self.stringValue 的值,来自子类 NSTextFieldCell。我正在查看 XCode 调试器中的值,并将它们也转储到 NSLog 中。我在
filename = [NSString stringWithFormat: @"%@.png", filename];之后得到的值不包括“.png”部分,因此我的其余代码不起作用,因为它找不到文件,因为它缺少扩展名 -
使用 NSLog 转储字符串。调试器经常撒谎。
-
“我正在查看 XCode 调试器中的值,并将它们也转储到 NSLog”
-
使用“文件名”以外的变量名——我怀疑你有
#defined之类的。
标签: objective-c cocoa nsstring nsmutablestring