2013-06-09 5 views
1

UIActivityViewController를 사용하여 다른 장치에서 열 수있는 사용자 지정 파일 형식뿐 아니라 순수 텍스트 형식으로 내 응용 프로그램의 내용을 공유합니다. 이 파일은 문제없이 생성 된 이메일에 첨부되지만 잘못된 파일 형식이 연결됩니다. 만들어진 사용자 지정 파일은 writeToURL을 사용하는 NSDictionary입니다. 예상대로 UIActivityViewController 파일 첨부 - 잘못된 파일 형식

NSMutableDictionary *theBinder = [NSMutableDictionary dictionaryWithObjects:@[@"test object"] forKeys:@[@"test key"]]; 
NSURL *binderURL = [NSURL fileURLWithPath:[[self cachesDirectory] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mtgbinder", [[NSUserDefaults standardUserDefaults] valueForKey:@"Current Binder"]]]]; 
[theBinder writeToURL:binderURL atomically:YES]; 

NSArray *activityItems = [NSArray arrayWithObjects:binderContents, binderURL, nil]; 

UIActivityViewController *shareView = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
shareView.excludedActivityTypes = @[UIActivityTypePostToTwitter, UIActivityTypePostToWeibo]; 
[self presentViewController:shareView animated:YES completion:nil]; 

파일

이 제대로 생성 : 다음 다른 응용 프로그램에서 해당 파일을 열려고하면

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>test key</key> 
    <string>test object</string> 
</dict> 
</plist> 

는 그러나 확장은 CSV로 변경됩니다. 내 응용 프로그램은 내 mtgbinder 파일 형식과 CSV 파일을 모두 열고 내보낼 수 있습니다. UTExportedTypeDeclarations에 문제가 있습니까?

<key>UTExportedTypeDeclarations</key> 
    <array> 
     <dict> 
      <key>UTTypeConformsTo</key> 
      <array> 
       <string>public.data</string> 
      </array> 
      <key>UTTypeIdentifier</key> 
      <string>com.chichapps.MTG-Binder.csv</string> 
      <key>UTTypeTagSpecification</key> 
      <dict> 
       <key>public.filename-extension</key> 
       <string>csv</string> 
       <key>public.mime-type</key> 
       <string>application/MTG-Binder</string> 
      </dict> 
     </dict> 
     <dict> 
      <key>UTTypeIdentifier</key> 
      <string>com.chichapps.MTG-Binder.mtgbinder</string> 
      <key>UTTypeDescription</key> 
      <string>MTG Binder Document</string> 
      <key>UTTypeTagSpecification</key> 
      <dict> 
       <key>public.mime-type</key> 
       <string>application/MTG-Binder</string> 
       <key>public.filename-extension</key> 
       <string>mtgbinder</string> 
      </dict> 
      <key>UTTypeConformsTo</key> 
      <array> 
       <string>public.data</string> 
      </array> 
     </dict> 
    </array> 
    <key>CFBundleDocumentTypes</key> 
    <array> 
     <dict> 
      <key>CFBundleTypeName</key> 
      <string>MTG Binder Document</string> 
      <key>LSHandlerRank</key> 
      <string>Owner</string> 
      <key>CFBundleTypeRole</key> 
      <string>Editor</string> 
      <key>LSItemContentTypes</key> 
      <array> 
       <string>com.chichapps.MTG-Binder.csv</string> 
       <string>com.chichapps.MTG-Binder.mtgbinder</string> 
      </array> 
     </dict> 
    </array> 

도움과 제안을 해주셔서 감사합니다.

답변

2

나는 무엇을 해야할지 알았다.

<dict> 
    <key>UTTypeConformsTo</key> 
    <array> 
     <string>public.data</string> 
    </array> 
    <key>UTTypeIdentifier</key> 
    <string>com.chichapps.MTG-Binder.csv</string> 
    <key>UTTypeTagSpecification</key> 
    <dict> 
     <key>public.filename-extension</key> 
     <string>csv</string> 
     <key>public.mime-type</key> 
     <string>application/MTG-Binder</string> 
    </dict> 
</dict> 

에 :

<dict> 
    <key>UTTypeConformsTo</key> 
    <array> 
     <string>public.data</string> 
    </array> 
    <key>UTTypeIdentifier</key> 
    <string>com.chichapps.MTG-Binder.csv</string> 
    <key>UTTypeTagSpecification</key> 
    <dict> 
     <key>public.filename-extension</key> 
     <string>csv</string> 
     <key>public.mime-type</key> 
     <string>application/csv</string> //Changing this fixed the problem 
    </dict> 
</dict> 
나는 변경했다
관련 문제