2012-03-01 10 views
0

ペーストボードにあるデータの種類を読み取ろうとしています。しかし、プログラムは私がイメージを持っていることを返しています(これはおそらくif文の最初の条件です)。私は間違って何をしていますか?これは私が参照しているコードの一部です。ありがとう。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)だから誰でもこれらを慎重に使用する場合..

ありがとう!

関連する問題