2015-04-21 105 views
2

我有一個跨平臺的解決方案(iOS和Android),它有一個公共共享項目,我嘗試從中加載數據庫文件。Xamarin:從共享項目加載數據庫的資產路徑

我試圖獲取,像這樣的文件夾路徑:

`Path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
` 

Path = System.IO.Path.Combine (Path, "database.db"); 

但文件不生成的路徑存在。

我拖放數據庫文件到iOS項目,以及共享項目,但它似乎並沒有工作。

在iOS中,相同的操作可以使用來完成:

[[NSBundle mainBundle] pathForResource:"database" ofType:"db"] 

我該怎麼做,對於一個共享類,如果可能的話?

+0

我使用共享的項目,而不是,因爲它更符合我的要求。有沒有辦法在共享項目中實現功能? – Alterecho

回答

1

「Environment.GetFolderPath(Environment.SpecialFolder.Personal);」根本沒有獲得你的應用程序資源。 如果您需要用戶修改數據,您應該將數據庫(在您的應用程序資源中)複製到該文件夾​​(Environment.GetFolderPath(Environment.SpecialFolder.Personal)),並且該文件將在SQLite連接上打開。從這一點開始,資源文件夾中的db文件將不再有用,因爲它不允許修改您的應用程序文件。

請注意,您只需要一次文件複製:即第一次您的應用程序運行

也就是說,使用你的數據庫文件(或其他文件)在你的項目,你可以添加一個引用該文件(作爲鏈接)並加載它,因爲您將從每個特定平臺加載任何資產。

參見以下鏈接獲取更多信息有關如何加載資產:

IOS: http://developer.xamarin.com/recipes/ios/general/file_system/load_a_file/

的android:http://developer.xamarin.com/guides/android/application_fundamentals/resources_in_android/part_6_-_using_android_assets/