2016-12-18 6 views
0

이것은 실제로 두 가지 질문입니다. 한 부분에서, 주어진 시스템에서 선언 된 모든 UTI를 열거 할 수있는 깔끔한 방법이 있는지 알고 싶습니다.Cocoa (Swift/Obj-C)에서 선언 된 모든 UTI를 얻는 방법 및/또는 App 번들에 의해 정의 된 UTI를 결정하는 방법?

lsregister -dump은 옵션으로, 내 측면에서 grep 및 구문 분석을 제공합니다. 그러나 더 나은 해결책이 없는지 궁금해합니다.

추가 ... 앱 경로가 주어지면 가져온/내 보낸 UTI 목록을 가져 오는 방법이 있는지 궁금합니다. 반대가 가능해야한다는 것을 안다. (즉 어떤 번들이 주어진 UTI를 선언했는지 찾아야한다.)

내가 궁금한 이유 중 하나는 질문의 첫 번째 부분에 대한 가능한 해결책은 모든 앱을 반복하고 가져온/내 보낸 UTI를 검색하는 것이기 때문입니다 (생각지도 못했지만 매우 효율적인 솔루션)

나는 어디에서나 내가 생각할 수있는 대답을 찾지 못했고, 실제로는 그렇게 대답하지 않았습니다. 지금까지는 lsregister -dump의 구문 분석 결과이거나 앱의 정보에서 직접 UTI 키를 읽는 것으로 보입니다. 파일 ...

마지막으로 내 검색에서 개인 API를 수도 수도 있지만 절대적으로 그것을 사용하는 방법을 전혀 모르겠다 이후 온라인에 대한 절대적으로 설명서가 ... 나는 얘기하고 있어요 "__UTCopyDeclaredTypeIdentifiers" ... 어쩌면 누군가가 (어떤 경우) 매개 변수는 함수 take를 수행합니까? 그리고/또는 정확히 반환합니까?

답변

0
import Foundation 
@_silgen_name("_UTCopyDeclaredTypeIdentifiers") func UTCopyDeclaredTypeIdentifiers() -> CFArray 

let UTIs = UTCopyDeclaredTypeIdentifiers() 
print(UTIs) 

함수가 알고있는 모든 UTI를 인쇄해야합니다.

+0

음, 그게 적어도 해결됩니다! 그것이 그렇게 간단하지 않다는 것을 믿을 수 없습니다 ... 대단히 감사합니다! –