Pergunta

Eu estou tentando ler o tipo de dados encontrados no quadro de colagem.No entanto, o programa é o retorno que eu tenho uma imagem (provavelmente porque é a primeira condição de se stattment).O que estou fazendo de errado?Esta é a parte do código que eu refiro.Obrigado.

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!
}
Foi útil?

Solução

Se você está apenas tentando ler o tipo de dados de um quadro de colagem, você provavelmente vai querer usar -canReadItemWithDataConformingToTypes: ou -canReadObjectForClasses:options: a fim de testar apenas se estes estão disponíveis.

Se você quiser ler os objetos em si, você está fazendo as chamadas de direita, embora a maneira que você está usando pode obter mais do que uma representação do mesmo item no pasteboard no evento que existem vários itens sobre o quadro de colagem com texto e representações de imagem.

Você também pode querer verificar para [pboardImg count] > 0.Embora a documentação indica claramente que, nulo será retornado se não pode criar objetos do tipo, você dificilmente será capaz de fazer qualquer coisa com uma matriz de comprimento zero de qualquer maneira e o objective-C telefonista de curto-circuito a chamada para nil retornar 0, o que também vai falhar o teste (como seria de desejar).

Outras dicas

Eu encontrei uma solução para isso e como gaige disse, os dados retornados, não contém apenas o conteúdo que um usuário pode ver, mas muitos outros tipos de informações.

Eu também descobriram e experimentaram a utilização de outros tipos de informações disponíveis, alguns dos quais são os seguintes:

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

No entanto, o Xcode versão que eu estou usando afirma que alguns destes poderão ser removido em futuras versões (estou usando o xcode 3) então, se alguém usa estes ser cuidado..

Obrigado pela ajuda!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top