Mac OSX / cocoa - получение строки пути к местоположению с необработанными данными для элемента NSPasteBoard - PullRequest
1 голос
/ 25 сентября 2011

У меня есть приложение, которое позволяет перетаскивать элементы из моего веб-браузера на значок панели приложения.

Когда я перетаскиваю изображение из Интернета и получаю необработанные данные с помощью [pBoardItem dataForType: NSPasteboardTypePNG]; Я получаю необработанные данные изображения, которые мне нужны, но мне также нужно знать местоположение формы изображения, где оно было снято (т. Е. http://www.somedomain.com/somedir/someimage.png) ИЛИ если оно локальное (/Users/somedude/photos/myphoto.png ).

Как получить информацию о местоположении?

Заранее спасибо.

[РЕДАКТИРОВАТЬ ** удалил ошибочный комментарий, который я сделал относительно stringForType здесь]

1 Ответ

2 голосов
/ 25 сентября 2011

На картоне нет ничего, что не было бы помещено его владельцем (приложение, которое копировало на него).

Найдите NSFilenamesPboardType и / или NSURLPboardType на картоне.

Если их там нет, копируется только изображение, без пути или URL. Это вполне возможно и допустимо, как в случае с фрагментом изображения, скопированного из Preview или редактора изображений, и для приложения также вполне возможно просто не указывать путь или URL на монтажной панели, так что не ожидайте что изображение обязательно будет содержать путь или URL.

когда я использую функцию stringForType:, я получаю только public.png (имя для этого временно предоставлено монтажной панелью).

Er? Вы говорите, что когда вы запросили строку для какого-то типа, вернувшаяся строка была @"public.png"?

Если это так, это не имеет ничего общего с изображением на монтажном столе; @"public.png" будет содержимым картона . Возможно, вы только что скопировали «public.png» в буфер обмена?

Если вы имели в виду, что вы получили строку для типа @"public.png", (1) которая не является временным именем, это UTI для PNG, (2) вы должны использовать именованные константы например, kUTTypePNG, вместо жестко закодированных литералов, и (3) значение для этого типа никогда не должно быть строкой. Я не ожидал бы получить что-нибудь полезное от stringForType: сообщения с этим типом.

...