2012-03-01 4 views
0

Я пытаюсь прочитать тип данных, найденных в картоне. Тем не менее, программа возвращает, что у меня есть изображение (вероятно, потому, что это первое условие в случае, если stattment). Что я делаю не так? Это часть кода, о котором я говорю. Благодарю.NSPasteboard не возвращает правильный тип данных

NSArray * imgType = [NSArray arrayWithObject:[NSImage class]]; 
NSArray * strType = [NSArray arrayWithObject:[NSString class]]; 

NSArray * pboardImg = [pboard readObjectsForClasses:imgType 
             options:nil]; 
NSArray * pboardStr = [pboard readObjectsForClasses:strType 
             options:nil]; 

if(pboardImg){ 
// Got an image! 
} 

if(pboardStr){ 
    // Got a string! 
} 
+0

Сколько записей в массиве? –

+0

Разве это не потому, что pboardImg не nil –

ответ

0

Если вы просто пытаетесь прочитать тип данных из картона, вы, вероятно, хотите использовать либо -canReadItemWithDataConformingToTypes: или -canReadObjectForClasses:options: для того, чтобы просто проверить, если они имеются.

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

Вы также можете проверить наличие [pboardImg count] > 0. Хотя в документации четко указано, что nil будет возвращен, если он не сможет создать какие-либо объекты такого типа, вы вряд ли сможете что-либо сделать с массивом нулевой длины, а диспетчер Objective-C будет замыкать вызов до nil, возвращающего 0, который также завершит тест (как вам хотелось бы).

+0

Я нашел решение для этого и, как сказал гейдж, возвращаемые данные содержат не только контент, который пользователь может видеть, но и многие другие виды информации. – Kevin

0

Я нашел решение этого и, как сказал гейдж, возвращенные данные содержат не только контент, который пользователь может видеть, но и многие другие виды информации.

Я также нашел и экспериментировал с использованием других видов информации, доступные, некоторые из которых являются следующими:

*NSStringPboardType;   
*NSFilenamesPboardType; 
*NSTIFFPboardType;  
*NSRTFPboardType;  
... 

Однако Xcode версии, что я использую государство, что некоторые из них могут быть удалены в будущих версиях (я использую xcode 3), поэтому, если кто-то использует их, будьте осторожны.

Спасибо за помощь!