Xamarin ios Cloud文件复制位置问题

时间:2018-11-29 02:34:44

标签: ios xamarin icloud icloud-drive

我已经使用xamarin表格ios连接了iCloud。我的文件已复制到icloud,没有任何错误。但是它保存在 file:/// private / var / mobile / Library / Mobile%20Documents / iCloud〜com〜companyname〜MobileDoc / 路径中。

当我在iCloud中检查时,我的文件没有显示。但是当我搜索该文件时,其位置显示为iCloud-> MobileDoc-> File.txt。但是当我在iCloud内部检查时,没有文件夹调用MobileDoc。

这是我尝试过的示例Here

这是我用来保存文档的代码。

var uburl = NSFileManager.DefaultManager.GetUrlForUbiquityContainer(null);

                 if (uburl == null)
                 {
                     HasiCloud = false;
                 }
                else
                 {
                     HasiCloud = true;
                     iCloudUrl = uburl;

                     var docsFolder = Path.Combine(iCloudUrl.Path, "Documents"); 
             var filePath = Path.Combine(docsFolder, fileName);

         FileService.Save(filePath, attachment.Content);
                     if (option == false)
                         FileService.Instance.Open(filePath);
                }

1 个答案:

答案 0 :(得分:0)

保存iCloud文档

要将UIDocument添加到iCloud,您可以直接调用UIDocument.Save(仅适用于新文档)或使用NSFileManager.DefaultManager.SetUbiquitious移动现有文件。示例代码使用此代码直接在普遍存在的容器中创建一个新文档(这里有两个完成处理程序,一个用于保存操作,另一个用于打开):

var docsFolder = Path.Combine (iCloudUrl.Path, "Documents"); // NOTE: Documents folder is user-accessible in Settings
var docPath = Path.Combine (docsFolder, MonkeyDocFilename);
var ubiq = new NSUrl (docPath, false);
var monkeyDoc = new MonkeyDocument (ubiq);
monkeyDoc.Save (monkeyDoc.FileUrl, UIDocumentSaveOperation.ForCreating, saveSuccess => {
Console.WriteLine ("Save completion:" + saveSuccess);
if (saveSuccess) {
    monkeyDoc.Open (openSuccess => {
        Console.WriteLine ("Open completion:" + openSuccess);
        if (openSuccess) {
            Console.WriteLine ("new document for iCloud");
            Console.WriteLine (" == " + monkeyDoc.DocumentString);
            viewController.DisplayDocument (monkeyDoc);
        } else {
            Console.WriteLine ("couldn't open");
        }
    });
} else {
    Console.WriteLine ("couldn't save");
}

根据文档,将文件保存到icloud时,需要使用UIDocument。这将是安全和稳定的。