UIDocumentInteractionController中的“表达结果未使用”

时间:2012-03-08 19:34:30

标签: objective-c ios uidocumentinteraction

温柔!我对我正在做的事情只有模糊的理解。

我正在尝试设置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;

我正在试图弄清楚这一点。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

很遗憾,您无法创建如下字符串:

documentController.name = @"%@", soundFileName;

@"%@"是文字NSString,但编译器不会为您进行任何格式化/替换。您必须显式调用其中一个字符串构造函数方法:

documentController.name = [NSString stringWithFormat:@"%@", soundFileName];

在这种情况下,由于soundFileName本身就是NSString,所以您需要做的就是分配:

documentController.name = soundFileName;

你得到的警告是编译器告诉你,逗号之后的位(你引用soundFileName的位置)正在被评估然后被丢弃,这真的是你的意思吗? / p>

在C中,因此在ObjC中,逗号是一个可以分隔语句的运算符;每个都单独评估。因此,您收到警告的这一行可以重写:

documentController.name = @"%@";
soundFileName;

如您所见,第二行根本不做任何事情。