J'essaie de sous-classer Pfuser dans l'analyse de iOS. Je peux créer une sous-classe, à l'aide du code suivant: lorsque j'appelle Comment puis-je obtenir l'objet Cached [myuser Curycutilisateur] code>, l'objet que je récupère est de type
Pfuser < / code>, mais n'est pas de type
myuser code>. Casting it to
Myuser * Code> n'aide pas, il jette simplement l'erreur "Sélecteur non reconnu envoyé à 0xce9c0c0" lorsque j'essaie d'utiliser l'une des propriétés personnalisées, par exemple.
user.avatar code> qui est défini dans Myuser. p>
CURCOREURE code> de mon type personnalisé? P> P> P> P >
3 Réponses :
Lorsque vous créez une nouvelle classe dans Analys, vous contrôlez le nom de cette classe. Par exemple, disons que vous créez une nouvelle classe nommée "armure".
Lorsque vous créez une sous-classe dans l'objectif-C, vous attribuez à la classe d'analyse créée à la classe d'analyse. Le code ci-dessous est le fichier de mise en œuvre de cette armure sous-classe. Comme vous pouvez le voir, le nom de la classe Objective-C est "Armor" et le nom de la classe d'analyse est également "Armor". P>
#import "BrandonsAwesomeClass.h" #import <Parse/PFObject+Subclass.h> @implementation BrandonsAwesomeClass @dynamic displayName; @dynamic rupees; @dynamic fireproof; + (NSString *)parseClassName { return @"Armor"; } @end
Essayez [objet pfuser] code>. p>
[Pfuser Curycutilisateur] code> retournera pfuser, mais
[objet pfuser] code> doit renvoyer votre sous-classe s'il est enregistré correctement. P>
Pourquoi cela a-t-il été évolué? Vérifiez cette réponse officielle de parse.com: parse.com/Questions/subclass-pfuser
[objet pfuser] code> ne renvoie pas l'utilisateur actuel mis en cache et est donc beaucoup moins utile, car il doit ensuite être extrait du serveur séparément. Quoi qu'il en soit, je devrais pouvoir travailler avec la sous-classe et avoir
[myuser CuroDUser] code> renvoie le bon type. Ma réponse montre comment faire ça.
La clé s'est avérée être la commande de l'enregistrement de sous-classes et de définir l'ID d'application.
[MyUser registerSubclass]; [Parse setApplicationId:@"FOO" clientKey:@"BAR"];
Quel est le reste de votre implémentation? Appelez-vous
registersubclass code>?
Je demande
registersubclass code> dans l'application délégué. Le reste de la mise en œuvre n'est pas vraiment important si je ne récupère pas le bon type.
Vous définissez un parseclassname? Si oui, vous ne devriez pas.
Vous obtenez quelque part avec cela, @gghw?