Мне нужно приложение для сканера штрих-кодов / QR-кодов для моей компании, которое должно работать на iPhone и Android, но в основном на iPhone.Я решил попробовать Xamarin Forms, и он отлично работал на Android, но приложил немало усилий, чтобы приложение даже появилось на iPhone.Наконец-то я открыл его на iPhone, но когда я нажимаю на кнопку сканирования, он выдает
необработанное исключение:
System.NullReferenceException: Object reference not set to an instance of an
object`
в классе приложения на UIApplication.Main (args, null, "AppDelegate ");
using System;
using System.Collections.Generic;
using System.Linq;
using Foundation;
using UIKit;
namespace QRNatives.iOS
{
public class Application
{
// This is the main entry point of the application.
static void Main(string[] args)
{
// if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here.
UIApplication.Main(args, null, "AppDelegate");
}
}
}
Я не программировал слишком долго, но кажется, что обычно ошибки нулевой ссылки довольно легко отследить.Тем не менее, я не могу видеть, где проблема на самом деле происходит с этим.Я подозреваю, что проблема в AppDelegate.cs, хотя на самом деле мне ничего не выпирает.
using Foundation;
using UIKit;
namespace QRNatives.iOS
{
// The UIApplicationDelegate for the application. This class is responsible for launching the
// User Interface of the application, as well as listening (and optionally responding) to
// application events from iOS.
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
//
// This method is invoked when the application has loaded and is ready to run. In this
// method you should instantiate the window, load the UI into it and then make the window
// visible.
//
// You have 17 seconds to return from this method, or iOS will terminate your application.
//
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
global::ZXing.Net.Mobile.Forms.iOS.Platform.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
}
}
Просто для получения дополнительной информации, вот что я использую для QrScanningService.cs для связи iOS с общимданные интерфейса.
using System.Threading.Tasks;
using QRNatives.Services;
using Xamarin.Forms;
using ZXing.Mobile;
[assembly: Dependency(typeof(QRNatives.iOS.Services.QrScanningService))]
namespace QRNatives.iOS.Services
{
class QrScanningService
{
public class QrCodeScanningService : IQrScanningServies
{
public async Task<string> ScanAsync()
{
var scanner = new MobileBarcodeScanner();
var scanResults = await scanner.Scan();
return scanResults.Text;
}
}
}
}
Я обыскал несколько старых постов, где возникла эта проблема, но ни один из прочитанных мною не дал реальных ответов на эту проблему.Кто-нибудь имел опыт успешного использования ZXing с Xamarin для iOS?Или у кого-нибудь есть предложения о том, как еще я могу отследить, откуда на самом деле происходит ошибка?Я застрял на этом некоторое время, поэтому любая помощь будет принята с благодарностью.Спасибо.