2014-09-25 74 views
1

通过在(http://forums.xamarin.com/discussion/24860/documents-directory-has-moved-in-ios-8#latest)开始的线程,我们正在努力使我们的应用程序适应iOS中有关访问iOS 8文件结构的最新变化。我们已经审查并试图实施iOS 8注释中的代码http://developer.xamarin.com/guides/ios/application_fundamentals/working_with_the_file_system/#Creating_Files_and_Directories,虽然示例代码的结果确实提供了一些环境 变量,一些额外的说明以及如何使结果的行为方式与Environment.GetFolderPath将会有所帮助 - 或者适用于任何适当方法的指导。处理iOS 8对Xamarin内的应用程序容器的更改(替代Environment.GetFolderPath)

构建发布存档并将其推送到运行iOS 8.0的iPad设备(请注意不是8.0.1)后会发生以下情况。我们用下面的代码:

var documents = NSFileManager.DefaultManager.GetUrls 
    (NSSearchPathDirectory.LibraryDirectory, 
    NSSearchPathDomain.User) 
    [0].Path 

而我们得到:

/var/mobile/Containers/Data/Application/8C4D70BC-7607-xxxx-xxxx-A503A061E1EF/Library 

但是,当我们尝试写入文件,在这个目录中,我们得到的设备日志以下错误:

Sep 25 12:47:22 Cognilores-iPad kernel[0] <Notice>: Sandbox: SEXI_reader(1243) deny file-write-create /usr/share/CogniLore 

是否有人能够帮助我们识别出现了哪些问题以及我们可以使用哪种解决方法?这是一个严重的问题 - 我们的应用程序在用户升级到8.0后立即崩溃,我们需要尽快获得更新版本进入审批流程。

回答

2

是任何人都能够帮助我们确定什么错误

你展示不匹配的设备日志的路径的路径。你确定他们来自相同的代码吗?

例如也许应用程序的另一部分后来尝试访问不同的目录(这是你在日志中看到的)?

一些快速测试显示,代码(如下)在iOS8设备上正常工作。

var urls = NSFileManager.DefaultManager.GetUrls (NSSearchPathDirectory.LibraryDirectory, NSSearchPathDomain.User); 
var path = urls [0].Path; 
File.WriteAllText (Path.Combine (path, "myfile.txt"), "woohoo"); 
相关问题