2012-09-19 36 views
7

Tôi đang xây dựng một ứng dụng cho phép người dùng thả video lên đó. Đưa ra danh sách các NSURL * đã bị loại bỏ làm cách nào để đảm bảo mỗi loại tuân theo loại UTI public.movie?Kiểm tra NSURL cho loại tệp UTI/

Nếu tôi có số NSOpenPanel, tôi chỉ sử dụng openPanel.allowedFileTypes = @[@"public.movie"]; và Cocoa sẽ xử lý nó cho tôi.

Cảm ơn trước!

Trả lời

17

này nên làm việc:

NSWorkspace *workspace = [NSWorkspace sharedWorkspace]; 

for (NSURL *url in urls) { 
    NSString *type; 
    NSError *error; 
    if ([url getResourceValue:&type forKey:NSURLTypeIdentifierKey error:&error]) { 
     if ([workspace type:type conformsToType:@"public.movie"]) { 
      // the URL points to a movie; do stuff here 
     } 
    } else { 
     // handle error 
    } 
} 

(Bạn cũng có thể sử dụng UTTypeConformsTo() thay vì phương pháp NSWorkspace.)

+0

Làm thế nào để bạn làm điều này trên iOS? '' 'NSWorkspace''' yêu cầu' '' AppKit''' chỉ khả dụng trên '' 'macOS'''. Cảm ơn. – Supertecnoboff

+0

Tìm thấy câu trả lời cho câu hỏi của riêng tôi - cho iOS: https://stackoverflow.com/a/5815629/1598906 – Supertecnoboff

0

Swift phiên bản:

do { 
    var value: AnyObject? 
    try url.getResourceValue(&value, forKey:NSURLTypeIdentifierKey) 
    if let type = value as? String { 
     if UTTypeConformsTo(type, kUTTypeMovie) { 
     ... 
     } 
    } 
} 
catch { 
} 
Các vấn đề liên quan