2013-09-23 33 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」)。

希望這有助於任何!

相關問題