Задача C Получить данные из блока завершения и проанализировать во внешнем классе - PullRequest
0 голосов
/ 02 июля 2018

У меня есть приложение с кодом, похожим на многие сетевые приложения. Я хочу получить полезную нагрузку json из блока завершения в массив и перечислить другой класс для создания объектов. Затем я хочу, чтобы эти объекты заполнили tableView.

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

Что такое хорошая архитектура для этого?

if (request) {
        [client sendTwitterRequest:request completion:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
            if (data) {
                // handle the response data e.g.
                NSLog(@"DID data request start");
                NSError *jsonError;
                NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
[self handleJSON:json];
                }
            }
            else {
                NSLog(@"Error: %@", connectionError);
            }
        }];
    }
    else {
        NSLog(@"Error: %@", error);
    }

Я создаю вспомогательный метод примерно так

-(void)handleJSON:(NSDictionary*)dictionary{

    for (NSDictionary *jsonDict in dictionary) {

        id value = [jsonDict valueForKey:@"text"];

        NSLog(@"string text %@", value);

    }

Но тогда я получаю

этот класс не совместим с кодом ключа для текста ключа. '

JSON выглядит так:

{
    "search_metadata" =     {
        "completed_in" = "0.041";
        count = 15;
        "max_id" = 1013632106432360448;
        "max_id_str" = 1013632106432360448;
        "next_results" = "?max_id=1013632026514079744&q=%23trump&include_entities=1";
        query = "%23trump";
        "refresh_url" = "?since_id=1013632106432360448&q=%23trump&include_entities=1";
        "since_id" = 0;
        "since_id_str" = 0;
    };



    statuses =     (
                {
            contributors = "<null>";   
            coordinates = "<null>";   
            "created_at" = "Mon Jul 02 03:55:01 +0000 2018";   
            entities =             {
                hashtags =                 (
                                        {
                indices =                         (
                            20,
                            28
                        );
                        text = GOODWIN;

Когда я быстро перечисляю, чтобы получить словари в массиве, количество массивов равно 2 - один для search_metadata, а другой для statuses. В пределах statuses есть несколько твитов. Я никогда не сталкивался с чем-либо подобным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...