2013-09-23 37 views
1

我疯了这个问题,但我认为答案比预期的更容易。 我有这样一个类:JSONModel类型不允许错误与NSMutableArray子类

@protocol Messagge @end 

@interface Messagge : JSONModel 

@properties ..... ... ... .. 

- (...) methods...... 
@end 

我使用这个类的对象在一个的NSMutableArray我下载从web服务的JSON。 在这样的另一个类:

@interface AnswerMessages : AJSONModelSubClass 

@property (strong,nonatomic) NSMutableArray<Messaggio, ConvertOnDemand> *messaggi; 

- (...) methods.... 

,一切似乎很好地工作在下载使用JSONModel initFromURLWithString:方法上AnswerMessages阵列。

但我需要改变我无法使它工作。

我子类的NSMutableArray为了方便,因为我需要添加的方法和一个委托(我使用的类别,但它现在是不够的),所以我创造了这个CLASSE:

@protocol MessaggesDelegate <NSObject> 

@required 

- (...) delegateMethods...... 

@end 

@protocol Messagges <Messagge,ConvertOnDemand> @end 

@interface Messagges : NSMutableArray <Messagge, ConvertOnDemand> 

- (....) methods.... 

@end 

,并试图改变AnswerMessages类像这样:

@interface AnswerMessages : AJSONModelSubClass 

@property (strong,nonatomic) Messaggi *messaggi; 

- (...) methods..... 

但现在当我使用initFromURLWithString:应用程序终止,因为:

*** Terminating app due to uncaught exception 'Type not allowed', reason: 'Messagges type not supported for AnswerMessages.messagges' 

所以我尝试了一些改变,但没有工作。

任何帮助?

在此先感谢

回答

1

因为NSArrayNSMutableArray ConvertOnDemand的性质需要使用幕后不同的类(即你声明一个NSArray的财产,但如果你想它的字典转换成模型时,才是必需的,它实际上将属性更改为另一个自定义类)。

简而言之,JSONModel没有真正测试与NSArray的子类一起使用,所以如果您只是使用NSArray代替NSArray,那么它可能会更容易。如果列表中没有太多项目,ConvertOnDemand肯定无法与自定义类一起工作(您也可以尝试跳过“ConvertOnDemand”)。

希望这有助于任何!

相关问题