У меня есть два классаJSONModel Ошибка: "Тип не разрешен" работает на прошивке 7 не на прошивке 6
=== ЛЮДИ ====
@protocol People @end
@interface People : JSONModel
@property (strong, nonatomic) NSString *id;
@property (strong, nonatomic) NSString *userName;
@end
=== ЛЮДИ КОНТЕЙНЕР === =
@interface PeopleContainer : JSONModel
@property (strong, nonatomic) People *people;
@end
код терпит неудачу на этой линии:
PeopleContainer *peopleContainer = [[PeopleContainer alloc] initWithDictionary:peopleContainerDict error:&err];
дает ошибка:
*** Terminating app due to uncaught exception 'Type not allowed', reason: 'Account type not supported for ChatRoomContainer.account'
*** First throw call stack: (0x2243012 0x1725e7e 0x34e90 0x76ef5 0xf18cf8 0xe8075a 0xe4e453 0xe4e164 0xedaa31 0x50fe53f 0x5110014 0x51012e8 0x5101450 0x53d9e72 0x53c1daa) libc++abi.dylib: terminate called throwing an exception
Проблема заключается в том, что она отлично работает с прошивкой> 7, но не на прошивке 6.1 (я тестировал на обоих тренажере и устройстве).
Может кто-нибудь помочь?
EDIT:
Вот СЧЕТ CLASS
#import <Foundation/Foundation.h>
#import "JSONModel.h"
@protocol Account @end
@interface Account : JSONModel
@property (strong, nonatomic) NSString *id;
@property (strong, nonatomic) NSString *userName;
@property (strong, nonatomic) NSString *emailAddress;
@property (strong, nonatomic) NSString *password;
@property (strong, nonatomic) NSString *phoneNumber;
@end
И другой класс ЧАТ КОМНАТА КОНТЕЙНЕР, содержащий СЧЕТ CLASS
#import "JSONModel.h"
#import "Account.h"
#import "Friend.h"
#import "ChatRoom.h"
@interface ChatRoomContainer : JSONModel
@property (strong, nonatomic) Account *account;
@property (strong, nonatomic) NSArray<ChatRoom> *chatRooms;
@property (strong, nonatomic) NSArray<Friend> *friends;
@end
Я разослать запрос на наш сервер, используя
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:
^(NSURLResponse *response, NSData *data, NSError *error)
{
if (completion) {
if (!error) {
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSDictionary *errorDict = [responseDict objectForKey:@"error"];
NSDictionary *warningDict = [responseDict objectForKey:@"warning"];
NSDictionary *result = [responseDict objectForKey:@"result"];
NSLog(@"RESULT\n====\n%@\n====\n",responseDict);
if(errorDict != nil && ![[NSNull null] isEqual:errorDict]) {
NSError* err = nil;
CustomError *error = [[CustomError alloc] initWithDictionary:errorDict error:&err];
completion(NO, nil, error, nil);
} else {
NSDictionary *chatRoomContainerDict = [result objectForKey:@"chatRoomContainer"];
NSError* err = nil;
ChatRoomContainer *chatRoomContainer = [[ChatRoomContainer alloc] initWithDictionary:chatRoomContainerDict error:&err];
if(!err) {
CustomWarning *warning = [[CustomWarning alloc] initWithDictionary:warningDict error:&err];
completion(!error, chatRoomContainer, nil, warning);
} else {
NSLog(@"ERROR WHILE PARSING CHAT ROOM CONTAINER JSON DICT!!! %@", [err userInfo]);
completion(!error, nil, nil, nil);
}
}
} else {
if(![AuxiliaryHelper connectedToInternet]) {
NSLog(@"NO INTERNET CONNECTION");
completion(NO, nil, [[CustomError alloc] initWithErrorType:ErrorTypeNoInternetConnection], nil);
} else {
DLog(@"INTERNAL SERVER ERROR!!!");
completion(NO, nil, [[CustomError alloc] initWithErrorType:ErrorTypeInternalServerError], nil);
}
}
}
}];
Тесты Все JSONMOdel блок передавать iOS7; ваша проблема должна быть очень конкретной. У вас есть более полный исходный код для показа? –
@IcanZilb Он отлично работает на iOS7, когда я запускаю его на симуляторе iOS 6 и 6.1 или устройстве, с которым он падает. Я обновил вопрос, включив в него исходный код. Плюс у меня есть "- (NSString *) debugDescription" и "- (NSString *) описание" методы в классе Account. –
@IcanZilb У вас есть идеи по этому поводу? Я отлаживал больше и отказывался в строке 337 в файле JSONModel.m «if ([valueTransformer отвечаетSoSelector: selector]) {« а затем выбрасывает исключение! Любая помощь будет оценена! –