0

私は素晴らしいQuickDialogライブラリを使用しています! これまでのところ、jsonファイルをプロジェクトに配置して表示することができました。しかし、私はそれをWebサービスから読みたいと思っています。ただし、関数は文字列を取ります。ここで関数を見ることができます。

- (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 (loginform) をロードするだけです。しかし、2 番目のフォーム (callback2.json) をロードしたい場合、dataparameter is nilと表示されます。

ブラウザで URL を参照すると、正しく表示されます。

誰でも私を助けることができますか?

敬具。

4

2 に答える 2

0

QuickDialog は現在、あなたがしようとしていることを行いません。initWithJSONFile メソッドは、ローカル ファイルの名前として文字列を使用するか、データを含むオブジェクト構造を使用します (コードでファイルを自分で読み取る場合のように、JSON 形式に従う必要があります。dataParameter をメソッドに渡す必要があります)。 、これは単なる空の辞書にすることができます。

今のところ、NSURL だけでなく、まず自分でファイルをダウンロードしてから解析し、そのメソッドに渡す必要があります。

私はこれをプロジェクトに直接追加することを考えていましたが、経験から、すべてのアプリケーションが異なる方法で物事を行う必要があるようです (読み込み画面を表示するかどうか、もしあればメッセージを表示するかなど)。エラーかどうかなど)、アプリに直接入れても多くの人には役に立ちません。

QuickDialog の Google グループに気軽に参加して、他のユーザーと議論してください。

于 2012-11-08T17:46:38.237 に答える
0

解決策は、NSURL をパラメーターとして受け取る関数 initWithJsonFile をオーバーライドすることでした。

- (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 に答える