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

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

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

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

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

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

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

PHPz
PHPz

学习是最好的投资!

répondre à tous(3)
Ty80

Je ne comprends pas très bien ce que tu veux dire. . . La réflexion de Java peut obtenir dynamiquement la méthode et la liste d'attributs d'une instance. Pour cette fonction, Obj-c peut utiliser la méthoderespondsToSelector: de NSObject pour confirmer si une instance a une certaine méthode ; Fondamentalement, cela peut remplacer la réflexion de Java.
En ce qui concerne le problème de juger la valeur de retour vide, je n'ai vraiment pas de bon moyen pour le moment. Je définis généralement une méthode et juge containObject:, nil, [NSNull null], length ou count dans l'ordre. Cette méthode peut être écrite dans un utilitaire ou peut être étendue et écrite dans NSDictionary et NSArray.

伊谢尔伦

Le mécanisme KVC d'Objc est similaire à la réflexion de Java. Il suffit de le chercher sur Google

Par exemple
@interface A : NSObject{
NSString * nom ;
>

Vous pouvez l'obtenir comme ça

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

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

Je ne sais pas si tu veux faire ça

Vous implémentez l'interface nscoding. - (id)initWithCoder :(NSCoder *)aDecoder peut faire ce que vous voulez. Je ne sais pas si je comprends bien.

小葫芦
  • OC dispose d'un framework open source de JSONModel, qui peut convertir Json en ViewModel
  • Le problème de la valeur nulle peut être déterminé lorsque la couche View est utilisée ou la valeur par défaut peut être définie lorsque le ViewModel est construit

  • Concernant la réflexion OC, vous pouvez utiliser NSClassFromString, NSSelectorFromString et d'autres méthodes

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!