1

JSONMODEl ( https://github.com/icanzilb/JSONModel ) を使用して、wordpress JSON FEED (json-api を使用) を解析しています。

「コメント」が必要な場合を除いて、すべてうまくいきます。

私のフィードはそのようなものです:

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";
                }
            );

だから私はそのような「ニュースモデル」を作ろうとします:

    #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

そして私のcommentmodelはそのように

#import "JSONModel.h"
@interface CommentModel : JSONModel

@property (assign, nonatomic) int id;
@property (strong, nonatomic) NSString* name;
@property (assign, nonatomic) NSString* content;
@end

しかし、アプリをビルドしようとすると、「フィード」が空になります。

ニュースモデルの「コメント」部分にコメントすると、内容がわかりました....

私はどこかで立ち往生していると思いますが、どこで!誰かがアイデアを持っているなら:)

どうもありがとう

4

4 に答える 4

3

commentsは配列であり、単一のコメントではありません。最上位レベルの()で配列を指定していることに注意してNSDictionary NSLog()ください。の内部には、 および で指定された配列要素が{あり}ます。

しかし、NewsModelは配列ではなくcomments単一のコメント ( ) として定義されています。CommentModelおそらく次のように宣言する必要があります。

ドキュメントのモデル コレクションとその処理方法を参照してくださいproducts

を宣言する必要があります。「モデル コレクション」の例の上部にある 例をprotocol参照してください。protocol

@protocol CommentModel
@end

その上:

@interface CommentModel : JSONModel
@property (strong, nonatomic) NSArray< CommentModel >* comments;
于 2014-08-29T22:06:02.487 に答える
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
于 2014-08-29T22:24:53.867 に答える
0

ありがとう、ビルドできましたが、今私がそれを割り当てようとすると

@try {
        _feed = [[NewsFeed alloc] initWithDictionary:obj error:nil];

    }
    @catch (NSException *e) {
        NSLog(@"Parse error : %@ reason %@", [e name], [e reason]);
    }

不正なプロパティ プロトコル宣言の理由は JSONModel プロパティ プロトコルが許可されておらず、JSONModel クラスではありません。

私のニュースフィードはそのようなものです

@interface NewsFeed : JSONModel
@property (nonatomic, strong)   NSArray <NewsModel> *posts;
@end

そして、「コメント」部分のないシャルムのように動作します...

ありがとう

于 2014-08-30T08:07:23.033 に答える