«Результат выражения не используется» в UIDocumentInteractionController - PullRequest
1 голос
/ 08 марта 2012

Будь нежным!У меня есть только смутное понимание того, что я делаю.

Я пытаюсь установить свойство Name для UIDocumentInteractionController с надеждой, что он изменит имя файла перед его отправкой в ​​другое приложение.Для этого я использую следующее:

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 Ответ

1 голос
/ 09 марта 2012

К сожалению, вы не можете создать такую ​​строку:

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

@"%@" - это буквальное значение NSString, но компилятор не сделает для вас никакого форматирования / замены. Вы должны явно сделать вызов одного из методов строкового конструктора:

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

В этом случае, тем не менее, поскольку soundFileName сам по себе является NSString, все, что вам нужно сделать, это назначить:

documentController.name = soundFileName;

Предупреждение, которое вы получаете, это то, что компилятор говорит вам, что бит после запятой (где вы ссылаетесь на soundFileName) оценивается, а затем отбрасывается, и это действительно то, что вы хотели сделать?

В C, и, следовательно, в ObjC, запятая является оператором, который может разделять операторы; каждый оценивается отдельно. Таким образом, эта строка, в которой вы получаете предупреждение, может быть переписана:

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

Как видите, вторая строка вообще ничего не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...