Creating my own file extension based on plist

北战南征 提交于 2019-12-17 22:53:17

问题


My application handles with files of type *.mndl which is not more than a customized *.plist. Up until now I've been using *.plist files but now I want to associate the extension and be able to open *.mndl files from any other app I have realized that renaming file.plist to file.mndl does not work. (Hence, I don't even know if I did correctly the extension association and exportation thing)

I sent to myself a file file.mndl from the computer and when received in mail.app I got file.mndl.plist (It was automatically renamed, this happened when reseting my iPad)

How can I create my own mndl files while being able to read its content using +dictionaryWithContentsOfFile: from NSDictionary class?

Even I am working with iOS I believe this kind of things were ported from MacOS and Cocoa. So Cocoa developers also could know this.

Your comments/answers are appreciated.

Thanks

ANSWERED: Just for completion purposes This is the addition I made to my info.plist:

    <key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.data</string>
            </array>
            <key>UTTypeDescription</key>
            <string>Mandala Chart File</string>
            <key>UTTypeIdentifier</key>
            <string>com.nacho4d.Accordion.mndl</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.filename-extension</key>
                <string>mndl</string>
            </dict>
        </dict>
    </array>
    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeIconFiles</key>
            <array>
                <string>Document320Icon.png</string>
                <string>Document64Icon.png</string>
            </array>
            <key>CFBundleTypeName</key>
            <string>Mandala Chart File</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSHandlerRank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.nacho4d.Accordion.mndl</string>
            </array>
        </dict>
    </array>

回答1:


At least for a Cocoa (desktop) app, you'd want to add the following information to your application's Info.plist.

http://www.markdouma.com/developer/nacho.plist

Obviously, you should change the uniform type identifier to something appropriate. (I usually do com.markdouma.something, since that's my website).

Note that you only want to specify an entry for NSDocumentClass if you plan on using Cocoa's NSDocument architecture by creating an NSDocument subclass to handle loading the files. Otherwise, you could always just implement the following < NSApplicationDelegate > (read that as application delegate protocol) method:

- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames;

That will give you an NSArray of NSStrings representing the POSIX paths to the files the user double-clicked on in the Finder (or dragged to the app icon, etc.)

If you want to go the NSDocument route, you can override the following method of NSDocument

- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)type error:(NSError **)outError;

and create your dictionary with [[NSDictionary dictionaryWithContentsOfFile:[url path]] retain];

Hope this helps...




回答2:


Eventually I found this which could be used as a reference too: I found this on Google's cache and it shows how to add several extensions with different properties :)

<key>UTImportedTypeDeclarations</key>
 <array>
  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.audio</string>
   <key>UTTypeIdentifier</key>
   <string>public.mp3</string>
   <key>UTTypeDescription</key>
   <string>MP3 audio</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <array>
     <string>MPG3</string>
     <string>mpg3</string>
     <string>Mp3 </string>
     <string>MP3 </string>
     <string>mp3!</string>
     <string>MP3!</string>
    </array>
    <key>public.mime-type</key>
    <array>
     <string>audio/mpeg</string>
     <string>audio/mpeg3</string>
     <string>audio/mpg</string>
     <string>audio/mp3</string>
     <string>audio/x-mpeg</string>
     <string>audio/x-mpeg3</string>
     <string>audio/x-mpg</string>
     <string>audio/x-mp3</string>
    </array>
    <key>public.filename-extension</key>
    <string>mp3</string>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <array>
    <string>public.audio</string>
   </array>
   <key>UTTypeIdentifier</key>
   <string>public.mpeg-4-audio</string>
   <key>UTTypeDescription</key>
   <string>MPEG-4 audio</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <array>
     <string>M4A </string>
    </array>
    <key>public.mime-type</key>
    <array>
     <string>audio/mp4</string>
    </array>
    <key>public.filename-extension</key>
    <array>
     <string>m4a</string>
    </array>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.movie</string>
   <key>UTTypeIdentifier</key>
   <string>public.mpeg-4</string>
   <key>UTTypeDescription</key>
   <string>MPEG-4 movie</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <array>
     <string>mpg4</string>
     <string>MP4 </string>
    </array>
    <key>public.mime-type</key>
    <array>
     <string>video/mp4</string>
     <string>video/mp4v-es</string>
    </array>
    <key>public.filename-extension</key>
    <array>
     <string>mp4</string>
    </array>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.movie</string>
   <key>UTTypeIdentifier</key>
   <string>public.mpeg</string>
   <key>UTTypeDescription</key>
   <string>MPEG movie</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <array>
     <string>MPG </string>
     <string>MPEG</string>
    </array>
    <key>public.mime-type</key>
    <array>
     <string>video/mpeg</string>
     <string>video/mpg</string>
     <string>video/x-mpeg</string>
     <string>video/x-mpg</string>
    </array>
    <key>public.filename-extension</key>
    <array>
     <string>mpg</string>
     <string>mpeg</string>
     <string>mpe</string>
     <string>m75</string>
     <string>m15</string>
    </array>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.audiovisual-content</string>
   <key>UTTypeIdentifier</key>
   <string>public.audio</string>
   <key>UTTypeDescription</key>
   <string>audio</string>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.movie</string>
   <key>UTTypeIdentifier</key>
   <string>public.video</string>
   <key>UTTypeDescription</key>
   <string>video</string>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.audiovisual-content</string>
   <key>UTTypeIdentifier</key>
   <string>public.movie</string>
   <key>UTTypeDescription</key>
   <string>movie</string>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.image</string>
   <key>UTTypeIdentifier</key>
   <string>com.microsoft.bmp</string>
   <key>UTTypeDescription</key>
   <string>Windows bitmap image</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <array>
     <string>BMP </string>
     <string>BMPf</string>
    </array>
    <key>public.mime-type</key>
    <string>image/bmp</string>
    <key>public.filename-extension</key>
    <string>bmp</string>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <array>
    <string>public.data</string>
    <string>public.content</string>
   </array>
   <key>UTTypeIdentifier</key>
   <string>public.audiovisual-content</string>
   <key>UTTypeDescription</key>
   <string>audiovisual content</string>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.image</string>
   <key>UTTypeIdentifier</key>
   <string>public.png</string>
   <key>UTTypeDescription</key>
   <string>Portable Network Graphics image</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>PNGf</string>
    <key>public.mime-type</key>
    <string>image/png</string>
    <key>public.filename-extension</key>
    <string>png</string>
    <key>com.apple.nspboard-type</key>
    <string>Apple PNG pasteboard type</string>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.image</string>
   <key>UTTypeIdentifier</key>
   <string>com.compuserve.gif</string>
   <key>UTTypeDescription</key>
   <string>Graphics Interchange Format (GIF)</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>GIFf</string>
    <key>public.mime-type</key>
    <string>image/gif</string>
    <key>public.filename-extension</key>
    <string>gif</string>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.image</string>
   <key>UTTypeIdentifier</key>
   <string>public.tiff</string>
   <key>UTTypeDescription</key>
   <string>TIFF image</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>TIFF</string>
    <key>public.mime-type</key>
    <string>image/tiff</string>
    <key>public.filename-extension</key>
    <array>
     <string>tiff</string>
     <string>tif</string>
    </array>
    <key>com.apple.nspboard-type</key>
    <array>
     <string>NeXT TIFF v4.0 pasteboard type</string>
     <string>NSTIFFPboardType</string>
    </array>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.image</string>
   <key>UTTypeIdentifier</key>
   <string>public.jpeg-2000</string>
   <key>UTTypeDescription</key>
   <string>JPEG 2000 image</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>jp2 </string>
    <key>public.mime-type</key>
    <string>image/jp2</string>
    <key>public.filename-extension</key>
    <array>
     <string>jp2</string>
     <string>jpf</string>
     <string>jpx</string>
     <string>j2k</string>
     <string>j2c</string>
    </array>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.image</string>
   <key>UTTypeIdentifier</key>
   <string>public.jpeg</string>
   <key>UTTypeDescription</key>
   <string>JPEG image</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>JPEG</string>
    <key>public.mime-type</key>
    <array>
     <string>image/jpeg</string>
     <string>image/jpg</string>
    </array>
    <key>public.filename-extension</key>
    <array>
     <string>jpeg</string>
     <string>jpg</string>
     <string>jpe</string>
    </array>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <array>
    <string>public.data</string>
    <string>public.content</string>
   </array>
   <key>UTTypeIdentifier</key>
   <string>public.image</string>
   <key>UTTypeDescription</key>
   <string>image</string>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <array>
    <string>public.data</string>
    <string>public.composite-content</string>
   </array>
   <key>UTTypeIdentifier</key>
   <string>com.apple.webarchive</string>
   <key>UTTypeDescription</key>
   <string>web archive</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <array>
     <string>weba</string>
    </array>
    <key>public.mime-type</key>
    <array>
     <string>application/x-webarchive</string>
    </array>
    <key>public.filename-extension</key>
    <array>
     <string>webarchive</string>
    </array>
    <key>com.apple.nspboard-type</key>
    <array>
     <string>Apple Web Archive pasteboard type</string>
    </array>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <array>
    <string>public.data</string>
    <string>public.composite-content</string>
   </array>
   <key>UTTypeIdentifier</key>
   <string>com.adobe.pdf</string>
   <key>UTTypeDescription</key>
   <string>Portable Document Format (PDF)</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>PDF </string>
    <key>public.mime-type</key>
    <string>application/pdf</string>
    <key>public.filename-extension</key>
    <string>pdf</string>
    <key>com.apple.nspboard-type</key>
    <string>Apple PDF pasteboard type</string>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.text</string>
   <key>UTTypeIdentifier</key>
   <string>public.html</string>
   <key>UTTypeDescription</key>
   <string>HTML text</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>HTML</string>
    <key>public.mime-type</key>
    <string>text/html</string>
    <key>public.filename-extension</key>
    <array>
     <string>html</string>
     <string>htm</string>
     <string>shtml</string>
     <string>shtm</string>
    </array>
    <key>com.apple.nspboard-type</key>
    <string>Apple HTML pasteboard type</string>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.plain-text</string>
   <key>UTTypeIdentifier</key>
   <string>public.utf16-plain-text</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>utxt</string>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.plain-text</string>
   <key>UTTypeIdentifier</key>
   <string>public.utf16-external-plain-text</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>ut16</string>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.plain-text</string>
   <key>UTTypeIdentifier</key>
   <string>public.utf8-plain-text</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>com.apple.ostype</key>
    <string>utf8</string>
    <key>com.apple.nspboard-type</key>
    <string>NSStringPboardType</string>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <string>public.text</string>
   <key>UTTypeIdentifier</key>
   <string>public.plain-text</string>
   <key>UTTypeTagSpecification</key>
   <dict>
    <key>public.mime-type</key>
    <string>text/plain</string>
    <key>public.filename-extension</key>
    <array>
     <string>txt</string>
     <string>text</string>
    </array>
   </dict>
  </dict>

  <dict>
   <key>UTTypeConformsTo</key>
   <array>
    <string>public.data</string>
    <string>public.content</string>
   </array>
   <key>UTTypeIdentifier</key>
   <string>public.text</string>
   <key>UTTypeDescription</key>
   <string>text</string>
  </dict>

 </array>



 <key>CFBundleDocumentTypes</key>
 <array>
  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>mp3</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>audio/mpeg</string>
    <string>audio/mpeg3</string>
    <string>audio/mpg</string>
    <string>audio/mp3</string>
    <string>audio/x-mpeg</string>
    <string>audio/x-mpeg3</string>
    <string>audio/x-mpg</string>
    <string>audio/x-mp3</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>MPG3</string>
    <string>mpg3</string>
    <string>Mp3 </string>
    <string>MP3 </string>
    <string>mp3!</string>
    <string>MP3!</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>MP3 audio</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.mp3</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>m4a</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>audio/mp4</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>M4A </string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>MPEG-4 audio</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.mpeg-4-audio</string>
   </array>
  </dict>

  <dict>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>audio</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.audio</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>bmp</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>image/bmp</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>BMP </string>
    <string>BMPf</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>Windows bitmap image</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>com.microsoft.bmp</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>png</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>image/png</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>PNGf</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>Portable Network Graphics image</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.png</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>gif</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>image/gif</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>GIFf</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>Graphics Interchange Format (GIF)</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>com.compuserve.gif</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>tiff</string>
    <string>tif</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>image/tiff</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>TIFF</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>TIFF image</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.tiff</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>jp2</string>
    <string>jpf</string>
    <string>jpx</string>
    <string>j2k</string>
    <string>j2c</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>image/jp2</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>jp2 </string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>JPEG 2000 image</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.jpeg-2000</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>jpeg</string>
    <string>jpg</string>
    <string>jpe</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>image/jpeg</string>
    <string>image/jpg</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>JPEG</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>JPEG image</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.jpeg</string>
   </array>
  </dict>

  <dict>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>image</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.image</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>webarchive</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>application/x-webarchive</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>weba</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>web archive</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>com.apple.webarchive</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>pdf</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>application/pdf</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>PDF </string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>Portable Document Format (PDF)</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>com.adobe.pdf</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>html</string>
    <string>htm</string>
    <string>shtml</string>
    <string>shtm</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>text/html</string>
   </array>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>HTML</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>HTML text</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.html</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>utxt</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.utf16-plain-text</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>ut16</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.utf16-external-plain-text</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeOSTypes</key>
   <array>
    <string>utf8</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.utf8-plain-text</string>
   </array>
  </dict>

  <dict>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>txt</string>
    <string>text</string>
   </array>
   <key>CFBundleTypeMIMETypes</key>
   <array>
    <string>text/plain</string>
   </array>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.plain-text</string>
   </array>
  </dict>

  <dict>
   <key>LSTypeIsPackage</key>
   <false />
   <key>NSExportableAs</key>
   <array>
   </array>
   <key>CFBundleTypeName</key>
   <string>text</string>
   <key>LSItemContentTypes</key>
   <array>
    <string>public.text</string>
   </array>
  </dict>

 </array>


来源:https://stackoverflow.com/questions/3827558/creating-my-own-file-extension-based-on-plist

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!