我正在尝试将文件扩展名附加到由子类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 = [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;
}
任何人都知道为什么会发生这种情况,或者可以提出任何替代方案? 任何帮助将不胜感激 感谢
答案 0 :(得分:0)
仅供测试。尝试使用此代码并在此更新输出值:
NSMutableString *filename = [[NSMutableString alloc] init];
[filename appendString:self.stringValue];
NSLog(@"text1: %@ ;", filename);
filename = [NSString stringWithFormat: @"%@.png", filename];
filename = [NSString stringWithFormat: @"%@.png%@", filename, filename];
NSLog(@"text2: %@ ;", filename);
答案 1 :(得分:0)
这应返回带扩展名的完整路径:
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Default.png"];
NSLog(@"%@", path);
因此,假设self.stringValue包含扩展名,您的方法应该使用它:
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
NSString *iconFileName = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.stringValue];
NSLog(@"%@", iconFileName);
}
如果它不包含扩展程序,请尝试以下操作:
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
NSString *strWithPath = [NSString stringWithFormat:@"%@.png", self.stringValue];
NSString *iconFileName = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:strWithPath];
NSLog(@"%@", iconFileName);
}
答案 2 :(得分:0)
这些应该有效(除非有拼写错误):
NSString* filename = @"abc";
NSString* result1 = [NSString stringWithFormat:@"%@.png", filename];
NSString* result2 = [filename stringByAppendingString:@".png"];
NSMutableString* result3 = [filename mutableCopy];
[result3 appendString:@".png"];
如果它们似乎无法正常工作,那么您在初始化或显示值时遇到了一些问题。
提示:在上述每一项之后立即放置NSLog(@"The answer is %@", resultN);
语句 (“resultN”已正确更改)以查看您获得的内容。请记住,如果从不同的对象看,您可能会看到不同的变量。