温柔!我对我正在做的事情只有模糊的理解。
我正在尝试设置UIDocumentInteractionController的Name属性,希望它在将文件名发送到另一个应用程序之前更改它。我正在使用以下内容来完成此任务:
UIDocumentInteractionController *documentController;
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSURL *soundFileURL = [NSURL fileURLWithPath:[docDir stringByAppendingPathComponent:
[NSString stringWithFormat: @"%@/%@", kDocumentNotesDirectory, currentNote.soundFile]]];
NSString *suffixName = @"";
if (self.mediaGroup.title.length > 10) {
suffixName = [self.mediaGroup.title substringToIndex:10];
}
else {
suffixName = self.mediaGroup.title;
}
NSString *soundFileName = [NSString stringWithFormat:@"%@-%@", suffixName, currentNote.soundFile];
documentController = [UIDocumentInteractionController interactionControllerWithURL:(soundFileURL)];
documentController.delegate = self;
[documentController retain];
documentController.UTI = @"com.microsoft.waveform-audio";
documentController.name = @"%@", soundFileName; //Expression Result Unused error here
[documentController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
我在这一行收到“表达结果未使用”错误:
documentController.name = @"%@", soundFileName;
我正在试图弄清楚这一点。任何帮助表示赞赏。
答案 0 :(得分:1)
很遗憾,您无法创建如下字符串:
documentController.name = @"%@", soundFileName;
@"%@"
是文字NSString
,但编译器不会为您进行任何格式化/替换。您必须显式调用其中一个字符串构造函数方法:
documentController.name = [NSString stringWithFormat:@"%@", soundFileName];
在这种情况下,由于soundFileName
本身就是NSString
,所以您需要做的就是分配:
documentController.name = soundFileName;
你得到的警告是编译器告诉你,逗号之后的位(你引用soundFileName
的位置)正在被评估然后被丢弃,这真的是你的意思吗? / p>
在C中,因此在ObjC中,逗号是一个可以分隔语句的运算符;每个都单独评估。因此,您收到警告的这一行可以重写:
documentController.name = @"%@";
soundFileName;
如您所见,第二行根本不做任何事情。