我使用JSONMODEl(https://github.com/icanzilb/JSONModel)来解析wordpress JSON FEED(使用json-api)。
一切顺利,除非我想要"评论"。
我的Feed就是这样:
comments = (
{
content = "<p>My comment</p>\n";
date = "2014-08-29 20:56:29";
id = 97813;
name = johndoe;
parent = 0;
url = "http://www.google.com";
}
);
所以我试着制作我的&#34; newsmodel&#34;那样:
#import "JSONModel.h"
#import "commentmodel.h"
@protocol NewsModel @end
@interface NewsModel : JSONModel
@property (strong, nonatomic) NSString* title;
@property (strong, nonatomic) NSString* content;
@property (strong, nonatomic) NSString* thumbnail_images;
@property (strong, nonatomic) NSString* premium;
@property (strong, nonatomic) NSString* id;
@property (strong, nonatomic) CommentModel* comments;
@end
和我的评论模型一样
#import "JSONModel.h"
@interface CommentModel : JSONModel
@property (assign, nonatomic) int id;
@property (strong, nonatomic) NSString* name;
@property (assign, nonatomic) NSString* content;
@end
但是当我尝试构建我的应用时,我的#34; feed&#34;是空的。
如果我评论&#34;评论&#34;新闻模型的一部分,我得到了内容......
我想我已经卡在了某个地方,但在哪里!如果有人想出一个主意:)
非常感谢
答案 0 :(得分:3)
comments
是一个数组,而非单个评论,请注意顶级(
和)
,它们在NSDictionary
NSLog()
中指定了一个数组。其中是由{
和}
指定的数组元素。
但是NewsModel
将comments
定义为单个注释(CommentModel
),而不是数组。它应该被宣布:
在文档中,请参阅Model collections以及如何处理products
。
您必须声明protocol
,请参阅&#34;模型集合&#34;顶部的示例protocol
。例子。
@protocol CommentModel
@end
以上:
@interface CommentModel : JSONModel
@property (strong, nonatomic) NSArray< CommentModel >* comments;
答案 1 :(得分:2)
@protocol CommentModel
@end
@interface CommentModel : JSONModel
@property (assign, nonatomic) int id;
@property (strong, nonatomic) NSString* name;
@property (assign, nonatomic) NSString* content;
@end
@interface NewsModel : JSONModel
@property (strong, nonatomic) NSString* title;
@property (strong, nonatomic) NSString* content;
@property (strong, nonatomic) NSString* thumbnail_images;
@property (strong, nonatomic) NSString* premium;
@property (strong, nonatomic) NSString* id; //int?
@property (strong, nonatomic) NSArray<CommentModel>* comments;
@end
答案 2 :(得分:0)
谢谢,让它构建,但现在如果我尝试用
分配它@try {
_feed = [[NewsFeed alloc] initWithDictionary:obj error:nil];
}
@catch (NSException *e) {
NSLog(@"Parse error : %@ reason %@", [e name], [e reason]);
}
我得到了一个Bad属性协议声明的原因是不允许JSONModel属性协议,而不是JSONModel类。
我的新闻源就是那样
@interface NewsFeed : JSONModel
@property (nonatomic, strong) NSArray <NewsModel> *posts;
@end
像没有“评论”部分的魅力一样工作......
由于
答案 3 :(得分:0)
作为上述答案的补充,因为我还无法添加评论,所有你需要做的就是添加一个具有相同名称的空协议,如下所示:
@protocol CommentModel
@end
然后,正如JsonModel documentation所述,符号与符号不同。第一个是JsonModel工作所需的协议声明,另一个是objc编译器帮助声明。您可以按照相同示例中的说明组合它们:
@property (nonatomic) NSArray<ProductModel *> <ProductModel> *products;