2013-10-08 3 views
0

У меня есть два класса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); 
      } 
     } 
    } 
}]; 
+0

Тесты Все JSONMOdel блок передавать iOS7; ваша проблема должна быть очень конкретной. У вас есть более полный исходный код для показа? –

+0

@IcanZilb Он отлично работает на iOS7, когда я запускаю его на симуляторе iOS 6 и 6.1 или устройстве, с которым он падает. Я обновил вопрос, включив в него исходный код. Плюс у меня есть "- (NSString *) debugDescription" и "- (NSString *) описание" методы в классе Account. –

+0

@IcanZilb У вас есть идеи по этому поводу? Я отлаживал больше и отказывался в строке 337 в файле JSONModel.m «if ([valueTransformer отвечаетSoSelector: selector]) {« а затем выбрасывает исключение! Любая помощь будет оценена! –

ответ

0

Я также сталкиваюсь с этой проблемой. возможно, ошибка произошла из вашего класса «Account, chatRoom и т. д.». я написал objc @property (assign,nonatomic) NSInteger goodId; в objc @property (assign,nonatomic) NSInteger* goodId; так просто проверить класс U

+0

Добро пожаловать в Stack Overflow! Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только вы [зарабатываете] (http://meta.stackoverflow.com/q/146472/169503) достаточно [ репутация] (http://stackoverflow.com/help/whats-reputation), вы сможете [комментировать] (http://stackoverflow.com/help/privileges/comment) в любом сообщении. Если у вас есть связанный, но другой вопрос, задайте новый вопрос (http://stackoverflow.com/questions/ask), ссылаясь на этот вопрос, если он поможет обеспечить контекст. – ddb

+0

моя ошибка исходит из ошибочного «@property (присваивать, неатомический) NSInteger goodId;« в »@property (присваивать, неатомный) NSInteger * goodId;». Так что в U-классе может возникнуть нечто подобное – Snail