2014-09-25 70 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"); 
相關問題