我创建了一个 Xamarin.Forms PCL 项目并尝试访问存储在 sqlite 数据库中的本地数据,该数据库在 Android 中是工作文件,但在 iOS 中不工作。每当我尝试使用 DependencyService 调用 iOS 特定代码时,它都会抛出 System.NullReferenceException: Object reference not set to an object of an instance。
这是我的来电声明
var db = DependencyService.Get<IDBPath>().GetDBPath();
这是我用于获取 Sqlite 连接的 iOS 特定代码
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 特定代码中使用了断点,但它从未到达断点并立即给出错误。我也尝试过查看异常以获取详细信息,但没有内部异常,并且在堆栈跟踪中它只指向调用该方法的行。