我现在尝试更新我的应用程序,但看到'unarchiveobjectwithdata:'已经被弃用了。我该如何解决这个问题?
我有一个类:
@interface Favorite : NSObject <NSSecureCoding> //NSCoding NSSecureCoding
@property (nonatomic) NSDate *wikiDate;
@property (nonatomic) FavoriteType type;
- (id) initWithDate:(NSDate *) date type:(FavoriteType) type;
- (id) initNilFavorite;
- (BOOL) isNilFavorite;
- (id) initWithCoder:(NSCoder *)aDecoder;
- (void) encodeWithCoder:(NSCoder *)aCoder;
@end
我有第二等级
@interface Settings : NSObject
+ (Settings *) sharedInstance;
@property (nonatomic) NSMutableArray *favorites;
// favorites part
- (BOOL) isFavorite:(NSDate *) date type:(FavoriteType) type;
- (void) addToFavorites:(NSDate *) date type:(FavoriteType) type;
- (void) removeFromFavorites:(NSDate *) date type:(FavoriteType) type;
- (void) groupFavorites;
- (void) saveSettings;
@end
当我在设置中保存收藏夹时
- (void) saveFavorites{
NSString* filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"favorites"];
NSError* error;
NSData* codedData = [NSKeyedArchiver archivedDataWithRootObject:self.favorites requiringSecureCoding:NO error:&error];
if(error!=nil) {
NSLog(@"Eror when try to archive favorites!!!!");
}
else {
[codedData writeToFile:filePath atomically:YES];
}
}
我尝试加载
- (void) loadFavorites{
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"favorites"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
if (data) {
self.favorites = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
}
一切正常,但现在我必须将unarchiveObjectWithData替换为unarchivedArrayOfObjectsOfClass
self.favorites是Favorite类的可变数组!
我尝试了各种方法:
NSSet *allowedClasses = [NSSet setWithObjects:[NSMutableArray class],[Favorite class], nil];
NSMutableArray *encodedData = [NSKeyedUnarchiver unarchivedObjectOfClasses:allowedClasses fromData:data error:&error];
和
NSData *encodedData = [NSKeyedUnarchiver unarchivedObjectOfClass:[NSArray class] fromData:data error:&error];
and
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingFromData:data error:&error];
[unarchiver setRequiresSecureCoding:NO];
[unarchiver decodeObjectOfClass:[Favorite class] forKey:@""];
[unarchiver finishDecoding];
无事可做 :(
请帮助我
if(error!=nil) { } else { self.favorites = encodedData;`
- BeattleJeuse