Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross'taki Görünümleri Bağlama yaparken NULL Referans İstisnaları Nasıl Hata Yaparım


MVVMCross'taki Görünümleri Bağlama yaparken NULL Referans İstisnaları Nasıl Hata Yaparım


MVVMCross'taki görünümleri bağlarken, null referans istisnalarının hata ayıklama, sorunu tanımlamak ve çözmek için birkaç adım içerir. İşte bu soruna nasıl yaklaşılacağına dair ayrıntılı bir rehber:

1. İstisnanın kaynağını belirleyin **

- Yığın izini kontrol edin: Yığın izi, boş referans istisnasının nerede meydana geldiğini gösterir. Bu sizin görüşünüz, görüntüleyin model veya MVVMcross'un kendisi içinde olabilir.
- Yaygın sorunlar: Ortak kaynaklar kayıtlı olmayan hizmetler, boş görünüm modelleri veya yanlış yapılandırılmış bağlamaları içerir.

2. ViewModel ve Bağlama Kurulumu'nu doğrulayın **

- ViewModel başlatma: Görünüm modelinizin düzgün bir şekilde başlatıldığından ve görünümde ayarlandığından emin olun. MVVMCross'ta, bu genellikle otomatik olarak gerçekleşir, ancak görüşünüzün `` ViewModel '' özelliğini kontrol ederek bunu doğrulayabilirsiniz.
- Bağlanma Yapılandırması: Bağlamaların doğru yapılandırıldığından emin olun. Bağlamaları tanımlamak ve türlerin eşleştiğinden emin olmak için `createBindingset` kullanın (örneğin,` MainView` ve `MainViewModel ').

3. Bağlantılardaki boş referansları kontrol edin **

- Mülk yolları: Bağlamalarınızdaki mülk yollarının doğru olduğundan ve özelliklerin görünüm modelinde bulunduğundan emin olun. Örneğin, `vm => vm.myproperty` için bağlıysanız,` myProperty'nin null olmadığını ve doğru bir şekilde tanımlandığını doğrulayın.
- Geç Başlatma: Özellikler daha sonra başlatılırsa (örneğin, `` viewdidload '' de), başlatma işleminden sonra bağların uygulandığından emin olun.

4. Dinamik içerik için gecikmiş bağlanma kullanın **

- Dinamik olarak içerik veya denetim oluşturuyorsanız, görünüm tamamen oluşturulduktan sonra bağlamaların uygulanmasını sağlamak için `DeclessBind 'kullanmayı düşünün. Bu özellikle özel kontroller veya dinamik listelerle çalışırken kullanışlıdır.

5. Uygun IOC kaydını sağlayın **

- Hizmet Kaydı: Görünüm modelinizde hizmetleri kullanıyorsanız, IOC konteynerine kayıtlı olduklarından emin olun. MVVMCross bu amaç için `` imvxiocprovider 'kullanır.
- InitialInelastChance: Platforma özgü IOC kayıtları yapıyorsanız, [4] 'de açıklananlar gibi sorunlardan kaçınmak için `` Base.InitialIZASTCHANS ()' 'adını verdiğinizden emin olun.

6. Özel bağlama sorunları **

- Özel bağlamalar kullanıyorsanız, hedef bağlama sınıflarınızın [5] 'de gösterildiği gibi' FillTargetFactories'i geçersiz kılarak doğru bir şekilde uygulandığını ve `setup.cs '' de kaydedildiğini doğrulayın.

7. Hata Ayıklama Teknikleri **

- Kesme Noktaları: Çalışma zamanında görüş modelinizin ve bağlamaların durumunu incelemek için kesme noktalarını kullanın.
- Günlükleme: Bağlayıcı işlemler ve potansiyel hatalar hakkında ayrıntılı bilgi almak için MVVMCross Logging'i etkinleştirin.

8. Mvxasynccommand sorunları **

- `mvxasynccommand` kullanıyorsanız, [1] 'de tarif edildiği gibi komutlar oluşturmadan önce` mvx.iocprovider'in başlatıldığından emin olun. Bu birim test senaryoları için çok önemlidir.

Bu adımları izleyerek, MVVMCross'taki görünüm bağlamalarıyla ilgili en boş referans istisnalarını tanımlayabilmeniz ve çözebilmeniz gerekir.

Alıntılar:
[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-test-mxvasynccommand/536185770
[2] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-ios ve-mvmcross
[3] https://github.com/mvvmcross/mvvmcross/issues/1378
[4] https://stackoverflow.com/questions/18954938/nullreference-exception-binding-with-mvvmcrross
[5] https://www.mvvmcross.com/documentation/adved/custom-data-binding
[6] https://stackoverflow.com/questions/40419789/mvvmcross-platform-exceptions-mvxexception-bindingcontext-is-null-mvxadap/40420356
[7] https://www.mvvmcross.com/documentation/adved/mvxnotifytask
[8] https://www.mvvmcross.com/documentation/fundamentals/data-binding