2

私は3つのタイプのオブジェクトを識別しようとしています:

  1. ファイルの URL の場合
  2. ディレクトリのURLの場合
  3. 単純な文字列の場合

今まで、私はこのコードしか持っていませんが、うまくいきません!

NSArray * classes = nil;
            classes = [[NSArray alloc] initWithObjects:[NSURL class],
                       [NSAttributedString class],[NSString class], nil];

            NSDictionary *options = [NSDictionary dictionary];
            NSArray * copiedItems = nil;
            copiedItems = [pb readObjectsForClasses:classes options:options];

ここで、配列copydItemsの最初のオブジェクトを取得して「types」プロパティを呼び出そうとすると、クラッシュします!

4

2 に答える 2

3

ここここを確認してください:
使用しているペーストボード タイプの代わりに、これらのペーストボード タイプを使用する必要があります。

NSString *NSStringPboardType;
NSString *NSFilenamesPboardType;
NSString *NSPostScriptPboardType;
NSString *NSTIFFPboardType;
NSString *NSRTFPboardType;
NSString *NSTabularTextPboardType;
NSString *NSFontPboardType;
NSString *NSRulerPboardType;
NSString *NSFileContentsPboardType;
NSString *NSColorPboardType;
NSString *NSRTFDPboardType;
NSString *NSHTMLPboardType;
NSString *NSPICTPboardType;
NSString *NSURLPboardType;
NSString *NSPDFPboardType;
NSString *NSVCardPboardType;
NSString *NSFilesPromisePboardType;
NSString *NSMultipleTextSelectionPboardType;

URL にはペーストボード タイプがあります。ファイルとフォルダを区別するには、ペーストボード データを使用して NSURL オブジェクトをインスタンス化し、その属性を照会してディレクトリであるかどうかを調べる必要があります。

EDIT:ペーストボードデータが自分のアプリケーションまたは他のアプリケーションによってそこに配置されているかどうかも考慮する必要があります。他のアプリケーションによって配置されている場合、クラスのペーストボード タイプが機能するかどうかはわかりません。

私は自分のプロジェクトの1つでこのようなものを使用しています:

supportedTypes = // array with supported types, maybe from the list
NSString *type = [pasteboard availableTypeFromArray:supportedTypes];
NSData *data = [pasteboard dataForType:type];
于 2014-02-23T20:16:57.973 に答える