NSDictionary со словарем в качестве объектов, получить объекты - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть NSDictionary как этот.

PhotoData =     {
    1 =         {
        "jf_photo_geotag" = "arayat philippines";
        "jf_photo_id" = 1;
        "jf_photo_url" = "http://adomainname/iphone_images/large/jf_largeimage1.png";
        "jf_user_id" = 1;
        comments =             {
            1 =                 {
                "jf_photo_comment" = "well i like this one. really. comment from janus";
                "jf_photo_comment_id" = 1;
                "jf_photo_id" = 1;
                "jf_user_id" = 1;
                "jf_username" = janus;
            };
            4 =                 {
                "jf_photo_comment" = asasfa;
                "jf_photo_comment_id" = 4;
                "jf_photo_id" = 1;
                "jf_user_id" = 1;
                "jf_username" = janus;
            };
        };
        likes =             {
            2 =                 {
                "jf_like_id" = 2;
                "jf_photo_id" = 1;
                "jf_user_id" = 1;
                "jf_username" = janus;
            };
        };
        "post_date" = "2012-02-23 16:34:14";
    };
    2 =         {
        "jf_photo_geotag" = "magalang philippines";
        "jf_photo_id" = 2;
        "jf_photo_url" = "http://adomainname/iphone_images/large/jf_largeimage2.png";
        "jf_user_id" = 2;
        comments =             {
            2 =                 {
                "jf_photo_comment" = "well this is now a comment from loaclhost! for phot number 2";
                "jf_photo_comment_id" = 2;
                "jf_photo_id" = 2;
                "jf_user_id" = 2;
                "jf_username" = fidel;
            };
            3 =                 {
                "jf_photo_comment" = asdfadf;
                "jf_photo_comment_id" = 3;
                "jf_photo_id" = 2;
                "jf_user_id" = 2;
                "jf_username" = fidel;
            };
        };
        likes =             {
            1 =                 {
                "jf_like_id" = 1;
                "jf_photo_id" = 2;
                "jf_user_id" = 1;
                "jf_username" = janus;
            };
        };
        "post_date" = "2012-02-23 16:34:31";
    };
    3 =         {
        "jf_photo_geotag" = "san fdo philippines";
        "jf_photo_id" = 3;
        "jf_photo_url" = "http://adomainname/iphone_images/large/jf_largeimage1.png";
        "jf_user_id" = 3;
        comments =             (
        );
        likes =             (
        );
        "post_date" = "2012-02-24 16:34:47";
    };
  };
success = 1;

}

в основном, этот NSDictionary содержит некоторые строковые данные, такие как jf_photo_url, jf_photo_id и т. Д., А также имеет другой словарь в качестве объектакак комментарии = ()

как я могу работать с этим словарем, чтобы изменить его структуру и создать и, возможно, создать новый словарь, похожий на этот:

PhotoData =     {
    {
        "jf_photo_geotag" = "arayat philippines";
        "jf_photo_id" = 1;
        "jf_photo_url" = "http://adomainname/iphone_images/large/jf_largeimage1.png";
        "jf_user_id" = 1;
        comments = (
            {
                "jf_photo_comment" = "well i like this one. really. comment from janus";
                "jf_photo_comment_id" = 1;
                "jf_photo_id" = 1;
                "jf_user_id" = 1;
                "jf_username" = janus;
            },
            {
                "jf_photo_comment" = asasfa;
                "jf_photo_comment_id" = 4;
                "jf_photo_id" = 1;
                "jf_user_id" = 1;
                "jf_username" = janus;
            }
        };
        likes =  (
                {
                "jf_like_id" = 2;
                "jf_photo_id" = 1;
                "jf_user_id" = 1;
                "jf_username" = janus;
            }
         ,"post_date" = "2012-02-23 16:34:14";
    },

    {
        "jf_photo_geotag" = "magalang philippines";
        "jf_photo_id" = 2;
        "jf_photo_url" = "http://adomainname/iphone_images/large/jf_largeimage2.png";
        "jf_user_id" = 2;
        comments =(
                {
                "jf_photo_comment" = "well this is now a comment from loaclhost! for phot number 2";
                "jf_photo_comment_id" = 2;
                "jf_photo_id" = 2;
                "jf_user_id" = 2;
                "jf_username" = fidel;
            },
            {
                "jf_photo_comment" = asdfadf;
                "jf_photo_comment_id" = 3;
                "jf_photo_id" = 2;
                "jf_user_id" = 2;
                "jf_username" = fidel;
            };
        };
        likes = (
            {
                "jf_like_id" = 1;
                "jf_photo_id" = 2;
                "jf_user_id" = 1;
                "jf_username" = janus;
            };
        },
        "post_date" = "2012-02-23 16:34:31";
    },
     {
        "jf_photo_geotag" = "san fdo philippines";
        "jf_photo_id" = 3;
        "jf_photo_url" = "http://adomainname/iphone_images/large/jf_largeimage1.png";
        "jf_user_id" = 3;
        comments =             (
        );
        likes =             (
        );
        "post_date" = "2012-02-24 16:34:47";
    };
  };
success = 1;

}

обратите внимание, что первый словарь имеет порядковый номер в каждом объекте.Я хочу удалить их.мой первый словарь загружен с сервера, второй - из списка

спасибо вам, ребята!Я надеюсь, вы понимаете мой вопрос.

1 Ответ

2 голосов
/ 09 февраля 2012

Похоже, вы хотите, чтобы ваш внешний словарь был массивом.Предполагая, что у вас уже есть эти данные в NSDictionary, вы можете скопировать их в массив следующим образом:

NSDictionary* photoDict = some_dict; //your outer dict
NSMutableArray* photoArray = [[[NSMutableArray alloc] init] autorelease];

NSEnumerator *enumerator = [photoDict objectEnumerator];
id value;
while((value = [enumerator nextObject])) {
  [photoArray addObject:value];
}

//do something with photoArray
...