JSONModel Bad property protocol message?

I have a problem reading JSON JSONModel library

{"images":[{"id":1,"name":"name1","img":"3423","note":"note1"},{"id":2,"name":"name2","img":"rew","note":"note2"},{"id":3,"name":"name3","img":"dsfs","note":"note3"},{"id":4,"name":"name4","img":"cxvxc","note":"note4"},{"id":5,"name":"name5","img":"erwe","note":"note5"}]} 

class model

 #import "JSONModel.h" @protocol ImagesModel @end @interface ImagesModel : JSONModel @property int id; @property (strong, nonatomic) NSString* name; @property (strong, nonatomic) UIImage* img; @property (strong, nonatomic) NSString* note; @end 

and i got this error

  Terminating app due to uncaught exception 'Bad property protocol declaration', reason: '<ImagesModel> is not allowed JSONModel property protocol, and not a JSONModel class.' 

Any help please?

+4
source share
2 answers

I see two problems with nested code.

Your model is good, but it is a model for one element - i.e. This is the model that you are going to use to upload a single image - not all images at once. Therefore, you need a model to describe that you have a collection of images, and another model (the one that you have) to describe each of the image objects.

The second problem is that one of your properties is a UIImage object, but you are passing a string in your JSON channel.

Therefore, for your example to work, you need:

 #import "JSONModel.h" //define the single image object protocol @protocol ImageModel @end //define the single image model @interface ImageModel : JSONModel @property int id; @property (strong, nonatomic) NSString* name; @property (strong, nonatomic) NSString* img; @property (strong, nonatomic) NSString* note; @end @implementation ImageModel @end //define the top-level model for the collection of images @interface Images : JSONModel @property (strong, nonatomic) NSArray<ImageModel>* images; @end 

Then read the JSON line and create an image model:

 NSError* err = nil; Images* imagesCollection = [[Images alloc] initWithString:JSONstring error:&err]; 

Then each of the elements in imagesCollection.images will be an instance of ImageModel .

Voila!

+4
source

I think you did not implement this class in a .m file. Therefore, when JsonModel internally executes the NSClassFromString() method, a crash occurs.

0
source

All Articles