2017-01-03 2 views
-2

ich NSMutableDictionary-NSUserDefaults dann erhalten Fehler speichern möchten:NSUserDefaults encodeWithCoder Unbekannter Selektor an Instanz gesendet

NSUserDefaults encodeWithCoder unrecognized selector sent to instance. Fatal Exception: NSInvalidArgumentException [NSUserDefaults encodeWithCoder:]: unrecognized selector sent to instance 0x17544a080

Hier ist mein Code:

NSUserDefaults *shared2 = [[NSUserDefaults alloc]initWithSuiteName:@"AppGroupName"]; 
NSMutableData *data1 = [[NSMutableData alloc]init]; 
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data1]; 
[archiver encodeObject:shareDic forKey: @"shareDic"]; 
[archiver finishEncoding]; 

if (data1 !=nil) 
{ 
    [shared2 setObject:data1 forKey:@"dicFitnessData"]; 
} 
+0

Aktualisieren Sie Ihre Frage mit aktuellem, relevantem Code. – rmaddy

+0

NSUserDefaults * shared2 = [[NSUserDefaults alloc] initWithSuiteName: @ "groupName"]; NSMutableData * data1 = [[NSMutableData alloc] init]; NSKeyedArchiver * archiver = [[NSKeyedArchiver-Zuordnung] initForWritingWithMutableData: data1]; [archiver encodeObject: shareDic forKey: @ "shareDic"]; [Archiver FinishEncoding]; if (data1! = Nil) { [shared2 setObject: data1 forKey: @ "dicFitnessData"]; } –

+2

Wie gesagt, aktualisieren Sie Ihre Frage. Veröffentlichen Sie keinen Code in Kommentaren. – rmaddy

Antwort

0

Sie müssen das NSCoding Protokoll implementieren.

- (void)encodeWithCoder:(NSCoder *)aCoder{ 
     [aCoder encodeObject:self.yourpoperty forKey:@"Your_KEY"]; 
     } 

    - (id)initWithCoder:(NSCoder *)aDecoder{ 
     if(self = [super init]){ 
     self.yourpoperty = [aDecoder decodeObjectForKey:@"Your_KEY"]; 
     } 
     return self; 
     } 
+0

kann ich Singleton-Klasse für das –

+0

ja verwenden können Sie es verwenden. – Ankur

Verwandte Themen