2017-03-23 2 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) 비트가 설정된 경우 단일 파일이 아니라 번들로 처리되어야합니다. 그러나 모든 패키지가 '번들'은 아닙니다.

참조 : 패키지가 장치에 설치된 응용 프로그램에서 사용하는 경우 How do I flag a folder as being a package?

, 다음의 확장 응용 프로그램에 의해 시스템에 등록되어 있어야합니다 일반보다는 패키지 폴더 인 것으로 그것을 식별하기 폴더. 그러나, 특정 유형이 등록되지 않은 앱에서 패키지를 패키지로 식별 할 수 있는지 확실하지 않습니다.

참조 : https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/DocumentPackages/DocumentPackages.html

패키지가 번들하지 않고 현재 장치, 그때에 확신 할 수있는 방법이 있다고 생각하지 않습니다에 설치된 응용 프로그램에 의해 등록되지 않은 확장자가있는 경우 정확하고 파일 이름 확장자가있는 작업은 아마도 사용자가 할 수있는 유일한 방법 일 것입니다.

+0

흥미 롭습니다! 설정하지 않고 번들 비트를 검사하는 코드 예제가 있습니까? – olynoise