проблема с NSKeyedUnarchiver unarchivedObjectOfClass: fromData: error; - PullRequest
2 голосов
/ 25 марта 2019
NSMutableArray * array;
array = [NSKeyedUnarchiver unarchiveObjectWithFile: mypath];

все в порядке.

NSData * data = [NSData dataWithContentsOfFile: mypath];
array = [NSKeyedUnarchiver unarchiveObjectWithData: data];

все в порядке.

Метод, который я не могу использовать:

+ UnarchivedObjectOfClass:``` from Date: error:

    @interface Magazzino: NSObject <NSCoding> {
    NSNumber * num;
    NSString * description;
    NSString * um;
    NSNumber * price list;
    NSNumber * discount;
    NSNumber * cost;
    NSNumber * price increase;
   }

NSMutableArray * array;
array = [NSKeyedUnarchiver unarchivedObjectOfClass: Magazzino.class   fromData: data error: & error];

Ошибка домена = NSCocoaErrorDomain Code = 4864 "значение для ключа 'root' было неожиданного класса 'NSMutableArray'. Допустимые классы '{( Magazzino

1 Ответ

0 голосов
/ 03 июня 2019

Я обнаружил, что вы должны включить NSString и NSNumber, а также основной класс в NSSet.

Например

NSSet *classesSet = [NSSet setWithObjects:[NSString class], [SurveyInfo class], [SurveyData class], [PlotInfo class], [DepthRange class], [SurveyLegData class], [ToolfaceData class], [WellboreGeometry class], [WellboreGeometryItem class], [AxisTitles class], [AxisLabels class], [AxisDimensions class], [TextStyle class], [Cell class], [UIFont class], [UIColor class], [NSArray class], [NSMutableArray class], [NSMutableData class], [NSDictionary class], [NSDate class], [NSValue class], [NSNull class], nil];
            NSArray *dataArray = (NSArray*)[NSKeyedUnarchiver unarchivedObjectOfClasses: classesSet fromData: unarchivedData error: &error];

Единственная проблема, которая у меня сейчас есть, это утечка.

...