7
votes

Obtenir le bon type lorsque le sous-classement Pfuser

J'essaie de sous-classer Pfuser dans l'analyse de iOS. Je peux créer une sous-classe, à l'aide du code suivant: xxx

lorsque j'appelle [myuser Curycutilisateur] , l'objet que je récupère est de type Pfuser < / code>, mais n'est pas de type myuser . Casting it to Myuser * 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 qui est défini dans Myuser.

Comment puis-je obtenir l'objet Cached CURCOREURE de mon type personnalisé?


4 commentaires

Quel est le reste de votre implémentation? Appelez-vous registersubclass ?


Je demande registersubclass 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?


3 Réponses :


1
votes

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


0 commentaires

0
votes

Essayez [objet pfuser] .

[Pfuser Curycutilisateur] retournera pfuser, mais [objet pfuser] doit renvoyer votre sous-classe s'il est enregistré correctement.


2 commentaires

Pourquoi cela a-t-il été évolué? Vérifiez cette réponse officielle de parse.com: parse.com/Questions/subclass-pfuser


[objet pfuser] 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] renvoie le bon type. Ma réponse montre comment faire ça.



20
votes

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"];


0 commentaires