objective-c如何实现java中的反射机制
PHPz
PHPz 2017-04-21 10:57:18
0
3
632

在开发iOS app时,经常会遇到服务端返回数据不完整的情况,比如缺少key,或者value为null的情况。

java中可以定义一个类,用反射的机制来进行数据初始化。

而objective-c中只能用nil和[NSNull null]来单独判断。来避免app crash。

整个view层也变得不够纯粹。

补充:
我现在的做法是。如果返回的是一个数组。数组中每一项又是一个对象。我们假设对象中有的key或者value是缺失的。那么就要遍历一边,逐个遇到不完整的情况追加key或者默认值。这样,在view层中,就不用再对key或value去做判断了。代码也专注在业务逻辑上。

问:
有没有更好的。更优雅的方式来实现。

PHPz
PHPz

学习是最好的投资!

membalas semua(3)
Ty80

Saya tidak begitu faham apa yang anda maksudkan. . . Refleksi Java secara dinamik boleh mendapatkan kaedah dan senarai atribut untuk fungsi ini, Obj-c boleh menggunakan kaedah respondsToSelector: untuk mengesahkan sama ada tika itu juga boleh menggunakan performSelector: untuk memanggil kaedah . Pada asasnya ia boleh menggantikan pantulan Java.
Bagi masalah menilai nilai pulangan kosong, saya benar-benar tidak mempunyai cara yang baik pada masa ini saya biasanya menentukan kaedah dan hakim mengandungiObject:, nil, [NSNull null], panjang atau kiraan dalam urutan. Kaedah ini boleh ditulis dalam util atau boleh dilanjutkan dan ditulis dalam NSDictionary dan NSArray.

伊谢尔伦

Mekanisme KVC Objc adalah serupa dengan pantulan Java. Google sahaja

Contohnya
@antaramuka A : NSObject{
NSString * nama;
}

Anda boleh mendapatkannya seperti ini

A *a = [[A alloc] init];

NSString *name = [a objectForKey:@"name"];

Saya tidak tahu sama ada anda mahu melakukan ini

Anda melaksanakan antara muka pengekodan. - (id)initWithCoder:(NSCoder *)aDecoder boleh melakukan apa yang anda mahu. Saya tidak tahu sama ada saya memahaminya dengan betul.

小葫芦
  • OC mempunyai rangka kerja sumber terbuka JSONModel, yang boleh menukar Json menjadi ViewModel
  • Masalah nilai nol boleh ditentukan apabila lapisan View digunakan atau nilai lalai boleh ditetapkan apabila ViewModel dibina

  • Mengenai refleksi OC, anda boleh menggunakan NSClassFromString, NSSelectorFromString dan kaedah lain

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan