2015-08-29 3 views
-3

Это было для меня раньше, но внезапно оно перестало работать.Что не так с JsonModel для iOS

У меня был объект Coupon разобранных хорошо JSONModel, и на самом деле объект не является пустым, но когда я бросил некоторые свойства, например coupon.title я получаю эту ошибку.

*** Нагрузочный приложение из-за неперехваченного исключением 'NSInvalidArgumentException', причина: '- [__ NSCFDictionary название]: непризнанные селектор направлен например 0x7f8510645ba0'

Почему это происходит? Спасибо.

Это мой объект:

#import "JSONModel.h" 

@protocol Coupon 
@end 

@interface Coupon : JSONModel; 
@property (assign, nonatomic) NSString* title; 
@property (strong, nonatomic) NSString* subtitle; 
@property (strong, nonatomic) NSString* text; 
@end 

и JSON:

{ 
"subtitle":"ENDOR", 
"title":"This IS THE OBJECT 1", 
"text":"And this is the text of the coupon!!!" 
} 
+0

Можете ли вы опубликовать данные JSON, с которыми работаете? – scunliffe

+1

без каких-либо подробностей никто не может ответить на ваш вопрос –

+0

Добавлено! извините за то, что –

ответ

-4

Хорошо, проблема заключалась в том, что я установил Pod, который я установил, в частности this bug.

+0

Привет Рафаэль. Я не голосовал по вашему вопросу, но мы просим, ​​чтобы комментарии о голосовании (или его справедливости) содержались в комментариях. Если вы считаете, что вас особенно плохо лечили, вы всегда можете отправлять сообщения в Meta. Тем временем я предлагаю вам удалить этот ответ и передать информацию ответа. Если вы можете расширить одно предложение, вы можете даже получить upvotes! – halfer

2

Вы не сохраняя строку в заголовке собственности; вы должны проконсультироваться с Apple, документы управления памятью: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html

+1

Почему он работал 1 час назад? –

+0

и я не использую Swift –

+4

не знаю, как помочь вам больше ... если вы не сохраните свои объекты, они будут освобождены ARC –

0

Старайтесь, чтобы доступно впоследствии с атрибутом copy @property данные:

@interface Coupon : JSONModel; 
@property (copy, nonatomic) NSString* title; 
@property (copy, nonatomic) NSString* subtitle; 
@property (copy, nonatomic) NSString* text; 
@end 

Больше информации здесь Objective-C declared @property attributes (nonatomic, copy, strong, weak)

В случае, если вы не уверены, если вы даже получите данные JSON, вы можете отладить его с помощью такого кода:

// In case JSON parsing was successful: 
NSLog(@"%@", json); 
// In case JSON parsing failed: 
NSLog(@"%@", [[NSString all] initWithData:json encoding:NSUTF8StringEncoding]); 
+0

То же самое происходит: \ –

+0

Кстати, ваша заметка о ошибке говорит, что в вашем словаре не было «заголовка», так что вам лучше, что на самом деле. Может быть сообщение об ошибке с сервера или, возможно, вы ничего не получили (ноль) – JOM

1

Обнаружил этот вопрос, пытаясь разобраться с проблемой.

В моем случае problemas был:

@property (assign, nonatomic) NSString* title; 

против

@property (strong, nonatomic) NSString* title; 

Marin Тодоров был прав, но мне потребовалось некоторое время, чтобы понять, почему он терпел неудачу. Библиотека потеряла ссылку, а позже, пытаясь получить значение, она не смогла разобрать данные.