Xamarin.Forms PCL プロジェクトを作成し、Android では作業ファイルであるが iOS では作業していない sqlite データベースに格納されているローカル データにアクセスしようとしています。DependencyService を使用して iOS 固有のコードを呼び出そうとすると、System.NullReferenceException: Object reference not set to an object がスローされます。
これが私の呼びかけ文です
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固有のコードに到達するとは思いませんが、ブレークポイントに到達せず、すぐにエラーが発生します。詳細については例外も試しましたが、内部例外はなく、スタックトレースではメソッドを呼び出した行のみを指しています。