2017-09-27 29 views
1

ユーザーがファイルappからファイルを選択して、そのファイルの内容を読み込んで変更して同じものロケーション。UIDocumentPickerViewControllerでUIDocumentPickerModeOpenモードでxcode(iOS)のファイルを編集する権限が与えられていません

私は、次のコードを使用してファイルを開くしようとしていた。

UIDocumentPickerViewController *documentProvider; 
documentProvider = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:[NSArray arrayWithObjects:@"public.comma-separated-values-text", nil] inMode: UIDocumentPickerModeOpen]; 
documentProvider.delegate = self; 
documentProvider.modalPresentationStyle = UIModalPresentationOverFullScreen; 

委任機能:

- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url { NSLog(@"%@", url.absoluteString); }

しかし、私は、ファイルを表示または編集しようとすると、それはというエラーを示しています私は閲覧/書き込み許可を持っていません。

私が受け取ったURLはファイルです:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/filename.csv

ファイルに対するアクセス権を取得する方法はありますiCloudで?私は、ファイルの内容を変更することができるサードパーティのアプリはほとんど見つけられませんでした。

答えて

0

セキュリティスコープのブックマークを使用してファイルにアクセスする必要があります。このように:

- (void) documentPicker: (UIDocumentPickerViewController *) controller 
    didPickDocumentAtURL: (NSURL *) url 
{ 
    if (controller.documentPickerMode == UIDocumentPickerModeOpen) 
    { 
      BOOL isAccess = [url startAccessingSecurityScopedResource]; 
      if(!isAccess) 
      { 
       return; 
      } 

      NSError * fileOpenError = nil; 
      NSString * fileContents = [NSString stringWithContentsOfURL: url 
                   encoding: NSUTF8StringEncoding 
                    error: &fileOpenError]; 

      // FileContents should now be set properly. 

      [url stopAccessingSecurityScopedResource]; 
    } 
} 
関連する問題