2015-04-11 1 views
-1

Это работало, а затем оно остановилось. Я отменил изменения и все еще не работает. И у меня очень похожий пользовательский класс 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. Я не могу понять, почему код не добавляет данные в «приветствие». Помогите. Благодарю.

+0

Чтобы быть ясно, если установить точку останова на 'SetValue: forKey:' метода, она вызывается? Обновите свой вопрос с выходом журнала. – rmaddy

+0

Да, @rmaddy, это называется. Все 10 элементов из файла JSON регистрируются на выходе. Я получаю вывод как: 2015-04-10 21: 16: 48.640 Проект [3605: 249142] ключ ключа: 2014-09-03 12:14:58 2015-04-10 21: 16: 55.715 Откровение [3605: 249142] sch1 ключ: 2014-09-03 00:00:01 2015-04-10 21: 16: 59.267 Проект [3605: 249142] img ключ: Farmers-market.jpg 2015-04-10 21:17: 00.789 Проект [3605: 249142] sch2: 2015-09-10 00:00:01 2015-04-10 21: 17: 01.773 Проект [3605: 249142] под ключ: Прага 2015-04-10 21:17 : 02.924 Project [3605: 249142] typ key: 0 <укороченный, потому что он был слишком длинным> – SteveSTL

+1

Привет, анонимно. Зачем? Что я сделал так неправильно, чтобы заработать ваше анонимное наказание? Благодарю. – SteveSTL

ответ

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]; 
     } 
} 
+1

Это сработало! Спасибо @ thorb65. – SteveSTL