首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSONModel返回零

JSONModel返回零
EN

Stack Overflow用户
提问于 2013-09-19 09:18:47
回答 1查看 3.6K关注 0票数 2

我使用JSONModel从URL中获取JSON。它是一个非常简单的对象,只包含两个字符串"name“和"url”。

首先,我创建了对象模型:

代码语言:javascript
复制
@protocol
Tutorial
@end
@interface Tutorial : JSONModel
@property (nonatomic, strong)   NSString *name;
@property (nonatomic, strong)   NSString *url;
@end

然后是对象源:

代码语言:javascript
复制
#import "JSONModel.h"
#import "Tutorial.h"
@interface TutorialFeed : JSONModel
@property (nonatomic, strong)   NSArray <Tutorial> *tutorials;
@end

然后在MasterViewController.m:

代码语言:javascript
复制
#import "MasterViewController.h"
#import "DetailViewController.h"
#import "TutorialFeed.h"
#import "JSONModelLib.h"

@interface MasterViewController () {
  TutorialFeed *feed;
  TutorialFeed *testFeed;
}
@end
@implementation MasterViewController
-(void)viewDidAppear:(BOOL)animated
{
    feed = [[TutorialFeed alloc]

initFromURLWithString:@"http://api.matematikfessor.dk/apps/teacher_videos"
       completion:^(JSONModel *model, JSONModelError *err) {
           NSLog(@"Tutorials %@", feed.tutorials);
       }];
 }
 @end

问题是,我在日志中被返回为零:(我不确定为什么会发生这种情况,因为我设法从这个URL:Kiwa URL从JSON获取数据。)

所有这些都完成了,遵循这个教程

我不知道我做错了什么。有人有线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-19 18:50:03

解释:

首先,JSONModel希望您的JSON对象是一个字典,只有这样它才能将其键与模型的属性匹配。

您的名为TutorialFeed的模型希望得到匹配属性名“教程”.This的JSON,这意味着您的JSON提要必须以以下形式提供:

{“教程”:{obj1},{obj2},{obj3},…}

实际上:视频

{obj1},{obj2},{obj3}

这就是为什么模型实例实际上是“零”的原因,因为JSON结构与模型所期望的不匹配。

解决方案:

如果在JSON提要的顶部有一个数组(如您使用的URL上的数组),则有两个选项:

1)在JSON提要中引入一个新键--即将JSON更改为{“教程”形式: obj1、obj2等.}

2)可以使用另一种方法解析JSON提要。查找医生来了并使用解析对象列表的静态方法:

代码语言:javascript
复制
#import "JSONModel+networking.h"
...
[JSONHTTPClient   
  getJSONFromURLWithString:@"http://api.matematikfessor.dk/apps/teacher_videos"
  completion:^(id feed, JSONModelError *err) {
    NSArray* tutorials = [Tutorial arrayOfModelsFromDictionaries: feed];
    NSLog(@"tutorials: %@", tutorials);
  }];
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18890762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档