2015-05-28 14 views
0

Я новичок на объективе c. Я не понимаю, почему моя функция не работает, она вызывает ошибку SIGBART при возврате функции.Зачем возвращать на функцию сигнал SIGBART?

+ (NSArray*) jsonToArray:(NSString*)jsonString 
{ 
    id mappedObj = nil; 
    RKObjectMappingProvider* mapProv = [[RKObjectMappingProvider alloc] init]; 

    RKObjectMapping* answerMapping = [SMAnswersWrapper entityMappingForSerializer]; 
    answerMapping.objectClass = [NSMutableDictionary class]; 

    [mapProv setSerializationMapping:answerMapping forClass:[SMAnswersWrapper class]]; 
    RKObjectMapping *proofsEntityMapping = [SMEntityArrayWrapper entityMappingWithContentMapping:answerMapping]; 

    [mapProv setMapping:proofsEntityMapping forKeyPath:@""]; 

    if (jsonString) 
    { 
     id obj = [jsonString objectFromJSONString]; 
     if (obj) 
     { 
      RKObjectMapper* mapper = [[RKObjectMapper alloc] initWithObject:obj mappingProvider:mapProv]; 

      RKObjectMappingResult* res = [mapper performMapping]; 
      mappedObj = [res asCollection]; 

      [mapper release]; 
     } 
    } 
    [mapProv release]; 
    return [[[mappedObj content] retain] autorelease]; 
} 

расположение Ошибка в этой строке:

return [[[mappedObj content] retain] autorelease];

Спасибо.

EDIT

Я нахожу свою ошибку, я не могу получить доступ к содержимому в [[[mappedObj content] retain] autorelease]; я должен был бросить mappedObj.

+0

проверьте главный файл и убедитесь, что 'UIApplicationMain' в порядке или нет. иначе положите точки останова на код и проверьте местоположение ошибки. – Esha

+0

Также в '[mapProv setMapping: proofsEntityMapping forKeyPath: @" "]; 'вам нужно указать правильный ключ« Key ». – Esha

+2

Я бы также предложил вам перейти на 'ARC' – rckoenes

ответ

0

я нахожу свою ошибку, я не могу получить доступ к содержимому в [[[mappedObj content] retain] autorelease]; я должен был бросить mappedObj.

0

Попробуйте следующее:

+ (NSArray*) jsonToArray:(NSString*)jsonString 
{ 
    id mappedObj = nil; 
    RKObjectMappingProvider* mapProv = [[RKObjectMappingProvider alloc] init]; 

    RKObjectMapping* answerMapping = [SMAnswersWrapper entityMappingForSerializer]; 
    answerMapping.objectClass = [NSMutableDictionary class]; 

    [mapProv setSerializationMapping:answerMapping forClass:[SMAnswersWrapper class]]; 
    RKObjectMapping *proofsEntityMapping = [SMEntityArrayWrapper entityMappingWithContentMapping:answerMapping]; 

    [mapProv setMapping:proofsEntityMapping forKeyPath:@""]; 

    if (jsonString) 
    { 
     id obj = [jsonString objectFromJSONString]; 
     if (obj) 
     { 
      RKObjectMapper* mapper = [[RKObjectMapper alloc] initWithObject:obj mappingProvider:mapProv]; 

      RKObjectMappingResult* res = [mapper performMapping]; 
      mappedObj = [res asCollection]; 

      [mapper release]; 
     } 
    } 
    [mapProv release]; 
    if (mappedObj) 
    { 
     return [[[mappedObj content] retain] autorelease]; 
    } 
    return [NSArray array]; 

} 

В вашем коде, если jsonString или obj будет ноль, mappedObj не будет инициализирован. Этот случай может вызвать сбой при доступе к [mappedObj content].

Попробуйте, это поможет .....

+0

Спасибо, я уже нашел ошибку, я не могу получить доступ к контенту, объект. – MohamedAli

 Смежные вопросы

  • Нет связанных вопросов^_^