0

我正在使用 QuickDialog 库,这太棒了!到目前为止,我设法将一个 json 文件放入我的项目中并显示它。但是知道我想从网络服务中读取它。但是该函数需要一个字符串。您可以在此处查看该功能。

- (QRootElement *)initWithJSONFile:(NSString *)jsonPath {
    self = [self initWithJSONFile:jsonPath andData:nil];
    return self;
}

我要做的是以下。

[sectionSamples addElement:[[QRootElement alloc] initWithJSONFile:@"loginform"]];
[sectionSamples addElement:[[QRootElement alloc] initWithJSONFile:[NSURL URLWithString:[NSString stringWithFormat:@"%@",@"http://192.168.0.102/testWeb/callback2.json"]]]];

就像你可以看到我的第一个元素只是加载了一个 json(登录表单),它位于我项目的某个地方。但是当我想要加载第二种形式(callback2.json)时。它说dataparameter 是 nil

当我在浏览器中浏览到 url 时,它会正确显示。

有谁能够帮助我?

亲切的问候。

4

2 回答 2

0

QuickDialog 目前不执行您想要执行的操作。initWithJSONFile 方法接受一个字符串作为本地文件的名称,或者一个带有数据的对象结构(它应该遵循 JSON 格式,就像你自己在代码中读取文件一样。dataParameter 需要在方法中传递,它可以只是一个空字典。

现在,您必须首先自己下载文件,然后解析它并将其传递给该方法,而不仅仅是 NSURL。

我一直在考虑将它直接添加到项目中,但从经验来看,似乎每个应用程序都需要以不同的方式做事(比如,我们是否应该显示加载屏幕,如果有,我们是否应该显示消息错误与否,等等),所以直接在应用程序中使用它不会帮助很多人。

随意跳上 Google 组的 QuickDialog 与其他人讨论这个问题!

于 2012-11-08T17:46:38.237 回答
0

好的,所以解决方案是重写函数 initWithJsonFile,它以 NSURL 作为参数。

- (QRootElement *)initWithJSONURL:(NSURL *)jsonPath andData:(id)data{

    Class JSONSerialization = [QRootElement JSONParserClass];
    NSAssert(JSONSerialization != NULL, @"No JSON serializer available!");

    NSError *jsonParsingError = nil;
    //NSString *filePath = [[NSBundle mainBundle] pathForResource:jsonPath ofType:@"json"];
    NSDictionary *jsonRoot = [JSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:jsonPath] options:0 error:&jsonParsingError];

    self = [self initWithJSON:jsonRoot andData:data];
    return self;
}
于 2012-11-09T07:59:00.127 回答