2017-03-23 9 views
2

私はDropbox iOS API v2を使用しています。ファイルからフォルダをソートしようとすると、パッケージ(すなわち、環境設定ファイル、またはxcodeprojectファイル、.frameworkなど)であるファイルがフォルダタイプとして表示されます。フォルダとファイルパッケージを区別する方法はありますか?iOS Dropbox API:ファイルパッケージからフォルダを指定するにはどうすればよいですか?

DBFILESMetadata * metaData = ...; 
if ([metaData isKindOfClass:[DBFILESFileMetadata class]]) { 
    // is a file 
} else if ([metaData isKindOfClass:[DBFILESFolderMetadata class]]) { 
    // is a folder or file package 
} else if ([metaData isKindOfClass:[DBFILESDeletedMetadata class]]) { 
    // has been deleted 
} 
+0

ファイル拡張子がある場合は、フォルダではないという考えがあります。それはこのような状況に十分対応できるかもしれません。 – olynoise

+0

[参照用のリンク:https://www.dropboxforum.com/t5/API-support/iOS-how-to-tell-folder-from-file-packages/m-p/213188] – Greg

答えて

0

これは私が終わったものです。

DBFILESMetadata * metaData = ...; 
if ([metaData isKindOfClass:[DBFILESFileMetadata class]]) { 
    // is a file 
} else if ([metaData isKindOfClass:[DBFILESFolderMetadata class]]) { 
    if ([[metaData.name pathExtension] isEqualToString:@""] == NO) { 
     // is a file package/bundle 
    } else { 
     // is a folder 
    } 
} else if ([metaData isKindOfClass:[DBFILESDeletedMetadata class]]) { 
    // has been deleted 
} 
1

'bundle'(B)ビットが設定されている場合は、1つのファイルではなくバンドルとして扱う必要があります。しかし、すべての「パッケージ」が「バンドル」であるとは限りません。

参照:パッケージがデバイスにインストールされるアプリケーションで使用される場合How do I flag a folder as being a package?

、その拡張機能がパッケージフォルダではなく普通であるように、それを識別するために、そのアプリケーションによってシステムに登録されなければなりませんフォルダ。しかし、特定のタイプが登録されていないアプリからパッケージとして識別できるかどうかはわかりません。

参照してください:https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/DocumentPackages/DocumentPackages.html

をパッケージには、バンドルではなく、現在のデバイスにインストールされているアプリによって登録されていない拡張子を持っている場合は、私はに特定することができ、任意の方法があるとは思いません正確であり、has-a-filename-extensionの作業はおそらくあなたができる唯一のものです。

+0

興味深い!設定するのではなく、バンドルビットをチェックするコード例がありますか? – olynoise

関連する問題