Добавление поддержки IPhone для БД sqlLite - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть приложение, которое должно работать на IPhone с помощью Xamarin.

Вот так выглядит моя сборка Android:

using myMood.Data;
using myMood.Droid.Data;
using System.IO;
using Xamarin.Forms;

[assembly: Dependency(typeof(SQLite_Android))]
namespace myMood.Droid.Data
{
    public class SQLite_Android : ISQLite
    {
        public SQLite_Android() { }
        public SQLite.SQLiteConnection GetConnection()
        {
            var sqliteFileName = "myMood.db3";
            string documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            var path = Path.Combine(documentsPath, sqliteFileName);
            var conn = new SQLite.SQLiteConnection(path);

            return conn;
        }
    }
}

Как бы выглядела "версия для iPhone"?

1 Ответ

2 голосов
/ 04 апреля 2019

С помощью .Net Standard 2.0 и Xamarin.Forms вы можете напрямую достичь этого в своем общем коде, как показано ниже для объекта подключения

public static SQLiteAsyncConnection GetSQliteAsyncConnection()
    {
        string sqliteFileName = "myMood.db3";
        string dbPath = string.Empty;
        switch (Xamarin.Forms.Device.RuntimePlatform)
        {
            case Device.Android:
                string documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
                dbPath = Path.Combine(documentsPath, sqliteFileName);
                break;
            case Device.iOS:
                string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                string libFolder = System.IO.Path.Combine(docFolder, "..", "Library");
                if (!System.IO.Directory.Exists(libFolder))
                {
                    System.IO.Directory.CreateDirectory(libFolder);
                }
                dbPath = System.IO.Path.Combine(libFolder, sqliteFileName);
                break;
            default:
                break;
        }
        var conn = new SQLiteAsyncConnection(dbPath);
        return conn;
    }
...