Пользовательский класс NSObject: больше не может добавлять объекты

Это работало, а потом прекратилось. Я отменил изменения, и они все еще не работают. И у меня есть очень похожий пользовательский класс NSObject, который отлично работает. Вот сделка...

У меня есть этот пользовательский класс, который в конечном итоге будет заполнен данными из объекта JSON. Вот файл.h

#import <Foundation/Foundation.h>

@interface SKGreeting : NSObject <NSCoding>

@property (strong, nonatomic) NSNumber *gid;
@property (strong, nonatomic) NSString *sub;
@property (strong, nonatomic) NSString *mes;
@property (strong, nonatomic) NSString *usr;
@property (strong, nonatomic) NSDate *rec;
@property (strong, nonatomic) NSDate *sch1;
@property (strong, nonatomic) NSDate *sch2;
@property (strong, nonatomic) NSString *img; // name of the image
@property (strong, nonatomic) NSString *itp; // image type
@property (strong, nonatomic) NSNumber *typ;

@property (strong, nonatomic) UIImage *image; //actual image

@end

После получения файла JSON я запускаю следующий код, чтобы загрузить его в класс SKGreeting. Однако объект SKGreeting "приветствие" становится пустым, когда он добавляется в приветствия NSMutableArray. Итак, конечным результатом является некоторое количество пустых объектов в "приветствиях".

+(NSMutableArray *)greetingsFromJSON:(NSData *)objectNotation error:(NSError **)error
{
    NSError *localError = nil;
    NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:objectNotation options:0 error:&localError];

    if(localError != nil) {
        *error = localError;
        return nil;
    }

    NSMutableArray *greetings = [[NSMutableArray alloc] init];
//    NSLog(@"Greetings: %@", greetings);
//    NSLog(@"Parsed Object: %@", parsedObject);

    NSArray *results = [parsedObject valueForKey:@"results"];
//    NSLog(@"Results Record Count: %d", results.count);
//    NSLog(@"array results: %@", results);

    for (NSDictionary *greetDic in results)
    {
        SKGreeting *greeting = [[SKGreeting alloc] init];

        for (NSString *key in greetDic)
        {
            if([greeting respondsToSelector:NSSelectorFromString(key)])
            {
                NSLog(@"%@ key: %@",key,[greetDic valueForKey:key]);
                [greeting setValue:[greetDic valueForKey:key] forKey:key];
            }
        }

        [greetings addObject:greeting];
    }

    // Save the data received to the user defaults
    NSData *encodedGreetings = [NSKeyedArchiver archivedDataWithRootObject:greetings];
    [[NSUserDefaults standardUserDefaults] setObject:encodedGreetings forKey:@"greetingsEncoded"];

    return greetings;
}

Как видите, я использовал несколько NSLog, чтобы убедиться, что я получаю контент в процессе, и я согласен. Шаг setValue ничего не добавляет к объекту SKGreeting. Я не могу понять, почему код не добавляет данные в "приветствие". Помогите. Благодарю.

1 ответ

Решение

Попробуй так [greetDic allKeys]:

 for (NSString *key in [greetDic allKeys]) {
        if([greeting respondsToSelector:NSSelectorFromString(key)])
        {
            NSLog(@"%@ key: %@",key,[greetDic valueForKey:key]);
            [greeting setValue:[greetDic valueForKey:key] forKey:key];
        }
 }
Другие вопросы по тегам