Исключить iCloud в качестве опции в NSSavePanel/NSOpenPanel
Я использую синхронизацию файлов iCloud за кулисами, чтобы синхронизировать экземпляры моего приложения Mac, поэтому у меня есть для этого права. К сожалению, это означает, что iCloud также появляется в качестве возможного места сохранения при вызове NSSavePanel.
Поскольку мое приложение не генерирует файлы, которые предназначены для повторного использования или повторного импорта обратно в мое приложение, у меня нет открытой панели iCloud. Однако мое приложение позволяет пользователю экспортировать простые отчеты в формате HTML или CSV. Я не ожидаю, что разумный пользователь выберет iCloud в качестве своего места сохранения при экспорте отчетов в мое приложение, но Apple теперь пометила это как причину отклонения приложения, поскольку они, по-видимому, могли это сделать, и тогда эти файлы фактически оказались в памяти. облако.
Как я могу отключить iCloud от возможных опций, когда пользователь собирается сохранить файл?
2 ответа
Моему приложению также было отказано в возможности сохранять экспортированные документы в iCloud. В примечании к рецензенту я указал, что нецелесообразно сохранять в iCloud, но они отклонили его во второй раз. Я спросил об образце кода в обзоре отзывов и на доске объявлений Apple, и не получил ответа. Наконец я сдался и просто отключил поддержку iCloud. Это удобно, но не обязательно.
Если вы создаете документ в TextEdit и экспортируете в PDF в iCloud, вы создаете файл, который TextEdit не может открыть. (Предварительный просмотр.) По собственным правилам Apple, TextEdit должен быть отклонен.
Если вы вообще используете iCloud и у вас есть панель сохранения, тогда iCloud будет вариантом сохранения. Надеюсь, это будет необязательным в будущем, но сейчас мое решение состоит в том, чтобы добавить опцию "Открыть" в моем меню приложений, которая позволяет моему приложению открывать мои сохраненные файлы с помощью системного приложения по умолчанию для этого элемента.
Например, мое приложение позволяет пользователям сохранять отчеты в виде текстовых файлов. Поэтому, когда они снова открывают их в iCloud, они открываются в TextEdit.
Это простой метод, который вы можете добавить в свой AppDelegate и связать с пунктом меню "Открыть".
- (IBAction)openDocument:(id)sender {
NSOpenPanel *openPanel = [[NSOpenPanel alloc] init];
if ([openPanel runModal] == NSOKButton)
{
NSURL *aFilePath = [[openPanel URLs] objectAtIndex:0];
NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
[workspace openURL:aFilePath];
}
}