1

UiTableViewのセルごとに次のNSDictionaryを取得しています。ドリルダウンして、以下のアセットサブ構造の最初のID値を取得できる必要があります。

{
    assets =     (
                {
            "chunk_size" = 262144;
            file =             {
                "is_dirty" = 0;
                "mongo_grid_f_s_file" =                 {
                    file =                     {
                        "_id" =                         {
                            "$id" = 503a58e09b41648f69000001;
                        };
                        chunkSize = 262144;
                        filename = "/private/var/tmp/phpPPZsUf";
                        length = 5849;
                        md5 = 5f2700f4d953ef866fe1d4967f9965fb;
                        name = Image1;
                        uploadDate =                         {
                            sec = 1346001120;
                            usec = 819000;
                        };
                    };
                    gridfs =                     {
                        chunks =                         {
                            w = 1;
                            wtimeout = 10000;
                        };
                        "chunks_name" = "assets.chunks";
                        "files_name" = "assets.files";
                        w = 1;
                        wtimeout = 10000;
                    };
                };
            };
            id = 503a58e09b41648f69000001;
            length = 5849;
            md5 = 5f2700f4d953ef866fe1d4967f9965fb;
            name = Image1;
            "upload_date" = "0.81900000 1346001120";
        },
                {
            "chunk_size" = 262144;
            file =             {
                "is_dirty" = 0;
                "mongo_grid_f_s_file" =                 {
                    file =                     {
                        "_id" =                         {
                            "$id" = 503a58e09b41648f69000004;
                        };
                        chunkSize = 262144;
                        filename = "/private/var/tmp/phphxvI3H";
                        length = 1551;
                        md5 = f193ffe87eb0138608a206dcf72bf704;
                        name = Image2;
                        uploadDate =                         {
                            sec = 1346001120;
                            usec = 841000;
                        };
                    };
                    gridfs =                     {
                        chunks =                         {
                            w = 1;
                            wtimeout = 10000;
                        };
                        "chunks_name" = "assets.chunks";
                        "files_name" = "assets.files";
                        w = 1;
                        wtimeout = 10000;
                    };
                };
            };
            id = 503a58e09b41648f69000004;
            length = 1551;
            md5 = f193ffe87eb0138608a206dcf72bf704;
            name = Image2;
            "upload_date" = "0.84100000 1346001120";
        }
    );
    coordinates =     {
        latitude = "37.78584";
        longitude = "-122.4064";
    };
    "created_at" = "2012-08-26T12:12:00-0500";
    id = 503a58e09b4164cf5a00000a;
    "number_of_cars" = 1;

}

私は以下を試しました:

 NSDictionary * classifiedAssets = [classified objectForKey:@"assets"];

次に、各IDを取得するために、次のことを行いました。

[classifiedImages objectForKey:@"id"]

しかし、私が得ているのは次のとおりです。

(503a58e09b41648f69000001, 503a58e09b41648f69000004)

括弧で囲まれたコンマ区切りのリストではなく、さまざまなIDのNSArrayを取得したいと思っていました。

任意のヒント?

4

2 に答える 2

2

必要なものはすでにあると思います。説明は次のとおりです。

NSDictionary * classifiedAssets = [classified objectForKey:@"assets"];

期待どおりではありません: NSDictionaryだと思うかもしれませんが(変数を入力したため)、実際には NSArray です (中かっこではなく JSON の括弧のため)。次に、これ:

[classifiedImages objectForKey:@"id"]
// by which I *assume* you mean:
[classifiedAssets valueForKey:@"id"]

実際には NSArray の気の利いた機能を利用しています。NSArray を呼び出すと、各メンバーvalueForKey:を呼び出した結果の NSArray が得られます。valueForKey:

NSLog 行の括弧とコンマについて話していると思います。そのコンテキストでは、括弧で囲まれたコンマ区切りの一連のものは NSArrayを示しますclass(ログに記録して確認してください)

于 2012-08-26T18:21:52.250 に答える
1

アセット ID の配列を取得するには、次のようにします。

// Assuming that 'classified' is the dictionary you have posted
NSArray *ids = [classified valueForKeyPath:@"assets.id"];

ここで興味深いのは、 が遭遇した場合にすべてのオブジェクトvalueForKeyPathを呼び出しながら、ドット表記を使用してオブジェクトをドリルダウンできることです。valueForKeyNSArray

于 2012-08-26T18:23:21.190 に答える