JSONModel库/模型集合错误

时间:2014-08-29 21:52:37

标签: ios json wordpress jsonmodel

我使用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;新闻模型的一部分,我得到了内容......

我想我已经卡在了某个地方,但在哪里!如果有人想出一个主意:)

非常感谢

4 个答案:

答案 0 :(得分:3)

comments是一个数组,而非单个评论,请注意顶级(),它们在NSDictionary NSLog()中指定了一个数组。其中是由{}指定的数组元素。

但是NewsModelcomments定义为单个注释(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;