我希望用户从文件应用程序中选择一个文件,然后我将读取该文件的内容,修改它并将其写在同一位置。
我试图使用以下代码打开文件:
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);
}
但是当我尝试查看或编辑该文件时,显示的错误是我没有查看/写入权限。
我收到的网址是file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/filename.csv
有没有办法获得iCloud中文件的权限?我发现很少有第三方应用程序可以修改文件的内容。
答案 0 :(得分:2)
您需要通过安全范围的书签访问该文件。像这样:
- (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];
}
}