A property list can only process certain classes (see What is a property list? ), Which GKAchievement not one of, NSUserDefaults uses property lists, so do that. GKAchievement , however, complies with the NSCoding protocol, which means that you can easily save them to disk using NSKeyedArchiver . I would create an array of unregistered achievements and read / write them like this:
//Assuming these exist NSArray * unreportedAchievements; NSString * savePath; // Write to disk [NSKeyedArchiver archiveRootObject:unreportedAchievements toFile:savePath]; // Read from disk unreportedAchievements = [NSKeyedUnarchiver unarchiveObjectWithFile:savePath];
source share