2017-01-03 35 views
-2

我要救NSMutableDictionaryNSUserDefaults然後得到錯誤:NSUserDefaults的encodeWithCoder無法識別的選擇發送到實例

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

這裏是我的代碼:

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

用實際的相關代碼更新您的問題。 – rmaddy

+0

NSUserDefaults * shared2 = [[NSUserDefaults alloc] initWithSuiteName:@「groupName」]; NSMutableData * data1 = [[NSMutableData alloc] init]; NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data1]; [archiver encodeObject:shareDic forKey:@「shareDic」]; [archiver finishEncoding];如果(data1!= nil) {shared2 setObject:data1 forKey:@「dicFitnessData」]; } –

+2

正如我所說,更新你的問題。不要在評論中發佈代碼。 – rmaddy

回答

0

您需要實現NSCoding協議。

- (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

我可以使用單身類的 –

+0

是的,你可以使用它。 – Ankur

相關問題