Я создал проект Xamarin.Forms PCL и пытаюсь получить доступ к локальным данным, хранящимся в базе данных sqlite, которая является рабочим файлом в Android, но не работает в iOS. Всякий раз, когда я пытаюсь вызвать специальный код iOS с помощью DependencyService, он выдает System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта.
Вот мое заявление о вызове
var db = DependencyService.Get<IDBPath>().GetDBPath();
Вот мой специальный код для iOS для получения Sqlite Connection
using SQLite.Net;
using SQLite.Net.Async;
using SQLite.Net.Platform.XamarinIOS;
using SwachhParyatanApp.iOS;
using System;
using System.IO;
[assembly: Xamarin.Forms.Dependency(typeof(DBPath_iOS))]
namespace SwachhParyatanApp.iOS
{
class DBPath_iOS
{
public SQLiteAsyncConnection GetDBPath()
{
var sqliteFilename = "localData.db";
string folder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string libraryPath = Path.Combine(folder, "..", "Library");
var path = Path.Combine(libraryPath, sqliteFilename);
var platform = new SQLitePlatformIOS();
var param = new SQLiteConnectionString(path, false);
var connection = new SQLiteAsyncConnection(() => new SQLiteConnectionWithLock(platform, param));
return connection;
}
}
}
Я не думаю, что вызывающий метод достигнет кода, специфичного для iOS, потому что я использовал точку останова в коде, специфичном для iOS, но он так и не дошел до точки останова и сразу же выдает ошибку. Я также пытался перейти к исключению для получения подробной информации, но внутреннего исключения нет, и в трассировке стека оно указывает только на строку, которая вызвала метод.
IDBPath
. - person valdetero   schedule 04.04.2016