Это работало, а затем оно остановилось. Я отменил изменения и все еще не работает. И у меня очень похожий пользовательский класс 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. Я не могу понять, почему код не добавляет данные в «приветствие». Помогите. Благодарю.
Чтобы быть ясно, если установить точку останова на 'SetValue: forKey:' метода, она вызывается? Обновите свой вопрос с выходом журнала. – rmaddy
Да, @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
Привет, анонимно. Зачем? Что я сделал так неправильно, чтобы заработать ваше анонимное наказание? Благодарю. – SteveSTL