1

J'ai un NSDictionary contenant certains objets: un NSSet de UITouches, un UIEvent et un NSString.Erreur lors du codage de UITouchesEvent comme NSData

Lorsque j'essaie d'encoder le dictionnaire en NSData, la chaîne code correctement. J'ai eu une erreur avec les UITouches étant codés, mais j'ai trouvé un moyen d'étendre la classe avec du code afin qu'un UITouch puisse être encodé. Cependant, je ne peux toujours pas encoder le UIEvent (qui est en fait un UITouchesEvent). Comment puis-je étendre UIEvent ou UIInternalEvent pour les rendre encodables en NSData?

Méthodes J'utilise pour le codage/décodage:

-(NSString *)stringFromDictionary:(NSDictionary *)dict{ 
    NSMutableData *data = [[NSMutableData alloc] init]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver encodeObject:dict forKey:@"dictKey"]; 
    [archiver finishEncoding]; 

    return [Base64 encode:data]; 
} 

-(NSDictionary *)dictionaryFromString:(NSString *)string{ 
    NSData *data = [[NSMutableData alloc] initWithData:[Base64 decode:string]]; 
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 
    NSDictionary *myDictionary = [unarchiver decodeObjectForKey:@"dictKey"]; 
    [unarchiver finishDecoding]; 
    return myDictionary; 

} 

erreur que je reçois:

-[UITouchesEvent encodeWithCoder:]: unrecognized selector sent to instance 

S'il vous plaît laissez-moi savoir si je manque une information importante en ce qui concerne le débogage. Merci!

Répondre

1

Vous devez avoir UITouch ou UITouchesEvent d'adapter le protocole UICoding. Cela signifie qu'il doit prendre en charge ces méthodes:

- (id)initWithCoder:(NSCoder *)decoder; 
- (void)encodeWithCoder:(NSCoder *)encoder; 

Je ne l'ai pas essayé moi-même, mais il devrait fonctionner si vous faites cela dans une catégorie de classe. La difficulté sera de trouver ce que vous avez besoin d'encoder pour pouvoir le décoder à nouveau en une instance correcte, si c'est ce dont vous avez besoin.

+0

Merci, mais comme je l'ai dit, j'ai déjà codé UITouch. J'essaie de comprendre comment faire avec UITouchesEvent. – rsmoz

+0

Mon mauvais, alors bien sûr vous devrez faire cela pour la classe 'UITouchesEvent'. Mais je ne pense pas que ce sera facile. – Pascal

Questions connexes