Во-первых, на какой документ вы ссылались, когда писали эту строку?
[self setDraggingSourceOperationMask:NSUIntegerMax forLocal:YES];
Это не имеет смысла. Не используйте NSUIntegerMax
. Используйте рабочие маски, как определено здесь . Там написано, что NSUIntegerMax
означает все, но вы не должны его использовать; Apple может переопределить бит в будущем. Вы должны использовать NSDragOperationCopy
или что-то конкретное. Если вы скопировали эту строку с веб-страницы или книги, вам следует прекратить доверять этой книге / веб-странице.
Во-вторых, forLocal:
должно быть NO
для передачи данных в другое приложение; local
здесь означает приложение локальное.
В-третьих, вместо установки архивных данных в
[pboard setData:data forType:librarySongDataType];
Рассмотрите возможность создания NSFileWrapper
и установите его с помощью writeFileWrapper:
, см. здесь . Таким образом, вы можете указать имя файла, который будет создан в Finder. В противном случае система не имеет представления о том, что представляют собой данные.