2011-09-13 19 views
10

Câu hỏi chung: khi tôi không sở hữu một định dạng tệp cụ thể, nhưng không có ai được định nghĩa bởi một người khác, làm cách nào để sử dụng định dạng tệp đó?Tôi cần mở tệp ở định dạng không có định dạng UTI được xác định trước, nhưng tôi không sở hữu định dạng. Tôi nên xuất UTI như thế nào?

Tình huống cụ thể: Tôi đang tạo plugin QuickLook cho các tệp .torrent và .nzb. (Lưu ý: các tập tin .nzb tương tự như các tập tin .torrent, ngoại trừ thay vì trỏ đến một trình theo dõi bittorrent, chúng trỏ tới máy chủ Usenet.) Tôi muốn plugin hiển thị dữ liệu nào .nzb/.torrent tập tin trỏ đến, tệp nào sẽ được tải xuống nếu chúng được mở và bất kỳ siêu dữ liệu hiện hành nào khác. Để làm điều này, tôi phải đặt ra Uniform Type Identifiers cho hai loại tệp này. Trong khi các tệp .torrent có một UTI được chỉ định của tệp com.bittorrent.torrent, .nzb không - định dạng NZB là defined by newzbin.com, không xuất bản ứng dụng riêng của nó (và do đó không xác định Mã định danh Kiểu Đồng bộ Mac OS X cho tôi sử dụng).

Các tùy chọn dường như là:

  1. xuất khẩu và sử dụng một UTI theo hình thức com.example.nzb, nơi example.com được sở hữu bởi tôi. Điều này có vẻ sai, bởi vì tôi không sở hữu định dạng nzb.
  2. Xuất và sử dụng UTI theo dạng com.newzbin.nzb, trong đó newzbin.com là không phải là do tôi sở hữu. Điều này có vẻ sai, bởi vì tôi không sở hữu newzbin.com.
  3. Làm như ví dụ: Unison (ứng dụng Mac OS X) thực hiện và bỏ qua toàn bộ UTI và sử dụng CFBundleTypeExtensions trong tệp Info.plist của tôi. Điều này có vẻ sai, bởi vì không chỉ là CFBundleTypeExtensions không được chấp nhận cho mỗi Apple's documentation, nhưng tôi không nghĩ rằng tôi có thể kết hợp sử dụng CFBundleTypeExtensionsLSBundleContentTypes (nếu LSBundleContentTypes hiện diện, vì tôi phải sử dụng com.bittorrent.torrent UTI, sau đó CFBundleTypeExtensions bị bỏ qua).

Điều phải làm trong trường hợp này là gì?

+0

Câu hỏi hay. :) –

Trả lời

5

Hãy thử sử dụng tiện ích dòng lệnh mdls để tìm UTI của tệp .nzb.

Ví dụ: thực hiện mdls trên phim QuickTime này hiển thị rõ ràng UTI của nó, được đóng hộp màu đỏ bên dưới. mdls

+2

Khi tôi làm điều đó, tôi nhận được giá trị dyn. * Cho kMDItemContentType - 'kMDItemContentType =" dyn.ah62d4rv4ge8068xc "'. Apple cho biết đây là [Nhận dạng loại động] (http://developer.apple.com/library/mac/#DOCUMENTATION/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html). Nó dường như là duy nhất cho hệ thống của nó được tạo ra, mặc dù, do đó, nó không phải là một giải pháp lâu dài. –

+0

Thật không may. Tôi sẽ làm một số nghiên cứu về điều này. – spudwaffle

+1

Có vẻ như ý tưởng tốt nhất là khai báo nó là 'public.nzb', vì bạn không sở hữu nó. Chỉ cần đảm bảo không có xung đột với các ứng dụng hiện có mở tệp này. – spudwaffle