Attempt to set a non-property-list object

ios, objective-c

Solution

Implement the `<NSCoding>` protocol in your entity class which you wanna save

-(void)writeArrayWithCustomObjToUserDefaults:(NSString *)keyName withArray:(NSMutableArray *)myArray {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myArray];
    [defaults setObject:data forKey:keyName];
    [defaults synchronize]; }

-(NSArray *)readArrayWithCustomObjFromUserDefaults:(NSString*)keyName {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *data = [defaults objectForKey:keyName];
    NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    [defaults synchronize];
    return myArray;  }

Problem

``` NSMutableArray *mutableArray = [NSMutableArray array]; Prostate *prostate = [Prostate new]; prostate.prostateCheckTimeString = self.prostateCheckTime.text; prostate.prostateCubeString =self.prostateCube.text; prostate.prostateAntigemString =self.prostateAntigem.text; prostate.peeSpeedMaximumString =self.peeSpeedMaximum.text; prostate.peeRemenderString =self.peeRemender.text; [mutableArray addObject:prostate]; NSArray *tempArray = [[NSArray alloc]initWithArray:self.mutableArray]; [Global saveArrayToUserDefault:prostateArray saveValue:tempArray]; NSArray *array = [Global getArrayFromUserDefault:prostateArray]; ``` //Below is my global object ``` **+(void)saveArrayToUserDefault:(NSString *)userDefaultKey saveValue:(NSArray *)value** { NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setObject:value forKey:prostateArray]; [userDefaults synchronize]; } **+(NSArray *)getArrayFromUserDefault:(NSString *)userDefaultKey** { NSArray *temp; NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; temp = [userDefaults objectForKey:userDefaultKey]; return temp; } ``` -----------------------------------Description --------------------------------------- I had Been Search for a while , I know NSUserDefault can only store NSArray , I tried to convert NSMutableArray to NSArray , but still got error -----------------------------------Error --------------------------------------------- Property list invalid for format: 200 (property lists cannot contain objects of type 'CFType') Attempt to set a non-property-list object ( ""

Original source

Related problems