Словарь не копируется в другой словарь с исключением: аргумент словаря не является NSDictionary

Я использую следующий код:

NSMutableDictionary *farmGatesDict  = [[NSMutableDictionary alloc] 
                 initWithDictionary:[xmlDictionary objectForKey:@"FarmGates"]];

        NSLog(@"value from dictionary : %@", [farmGatesDict objectForKey:@"FarmGate"]);


NSMutableDictionary *farmDetailDict=[[NSMutableDictionary alloc] 
                 initWithDictionary:[farmGatesDict objectForKey:@"FarmGate"]];

NSLog(@"%@", farmGateString);

Я использую это, потому что этот словарь представляет собой проанализированный XML-файл, и я хочу пересечь дерево. Мой первый код, который предназначен для farmGatesDict , работает хорошо, но для второго приложения farmDetailDict происходит сбой со следующим исключением:

- [NSDictionary initWithDictionary: copyItems:]: словарь не является NSDictionary '

Пожалуйста, предложите мне, если мне не хватает.

Ниже приведены данные NSLog ...

2012-12-28 15:40:05.223 FarmGates[6170:c07] value from dictionary : (
        {
        address =         {
            text = "\n        2873 Huon Highwway, 2km south of Huonville, over the bridge on river side of road.";
        };
        contact =         {
            text = "\n        Contact 03 6264 1474";
        };
        description =         {
            text = "\n        Shed Door Sales. Arguably the longest standing and most popular road side stall in the Huon. Incorporated with a modern apple packing facility and featuring the refrigerated displays this ensures the freshest stock direct from the grower.";
        };
        fruits =         {
            fruit =             (
                                {
                    text = "\n        \n          Cherries";
                },
                                {
                    text = "\n          Apple";
                }
            );
            text = "\n        ";
        };
        id = 1;
        images =         {
            image =             (
                                {
                    text = "\n        \n          a1.jpg";
                },
                                {
                    text = "\n          b1.jpg";
                },
                                {
                    text = "\n          c1.jpg";
                }
            );
            text = "\n        ";
        };
        latitude =         {
            text = "\n        -43.04964";
        };
        longitude =         {
            text = "\n        147.03903";
        };
        name =         {
            text = "\n  \n  \n        Griggs Grower Direct apples and cherries";
        };
        open =         {
            text = "\n        Open daily except Christmas and Boxing Day.";
        };
        region =         {
            text = "\n        Huon Valley";
        };
        services =         {
            service =             {
                text = "\n        \n            NA";
            };
            text = "\n        ";
        };
        text = "\n    ";
    },
)
2
@Ashu: Проверьте мой ответ ....
добавлено автор Anoop Vaidya, источник
проверьте, возвращает ли ваш [farmGatesDict objectForKey: @ "FarmGate"] словарь или нет.
добавлено автор spider1983, источник
У меня возникла проблема, когда я использую синтаксический словарь xml (xmlDictionary), который содержит вложенные теги и когда появляются вложенные теги »(« знак приближается, который не является стартовым знаком словаря. Тем не менее у меня нет решения любой, пожалуйста, предложите что-нибудь ..
добавлено автор Ashutosh, источник

5 ответы

Вы получаете массив, что легко увидеть из NSLog .

(
        {
        address =         {
            text = "\n        2873 Huon Highwway, 2km south of Huonvil

So use objectAtIndex: first then go for objectForKey:

NSMutableDictionary *farmDetailDict=[[NSMutableDictionary alloc] initWithDictionary:farmGatesDict[0]];
3
добавлено
Nslog словаря начинается с {, в то время как для массива (. Вот почему я сказал, что он содержит массив. Вы проверили мой код? Если по-прежнему ошибка вы можете отправить мне свой код? Мой идентификатор электронной почты в моем профиле.
добавлено автор Anoop Vaidya, источник
попробуйте nslogging как [... class] , если он дает словарь, чем круто, иначе каким-то другим способом вам нужно двигаться.
добавлено автор Anoop Vaidya, источник
Я не использовал в моем приложении одно имя именованного массива, и этот NSLog предназначен для следующего кода, который предназначен только для словаря. Значение NSLog (@ "из словаря:% @", [farmGatesDict objectForKey: @ "FarmGate"]);
добавлено автор Ashutosh, источник
этот знак идет, потому что я xmlDictionary состоит из проанализированных данных из xml-файла и всякий раз, когда вложенные теги появляются с этим знаком. И вы правы, проблема точно такая же, как вы можете предложить решение, поскольку я не могу отправить код в качестве его данных проекта
добавлено автор Ashutosh, источник
да, ты прав, мне нужно изменить свой путь. Thanx
добавлено автор Ashutosh, источник

Просто напишите следующую строку до , которая рушится.

NSLog(@"value from dictionary : %@", [farmGatesDict objectForKey:@"FarmGate"]);

и опубликуйте результат NSLog .. Я бы поспорил, что полученное вами значение не является NSDictionary .

0
добавлено

проверить возвращаемое значение

farmGatesDict objectForKey:@"FarmGate"]

попробуйте NSLog it

0
добавлено

Я сомневаюсь, что [xmlDictionary objectForKey: @ "FarmGates"] не возвращает NSDictionary .

NSMutableDictionary *farmGatesDict  = [[NSMutableDictionary alloc] 
                 initWithDictionary:xmlDictionary];

Он должен работать.

0
добавлено

Кажется, что [farmGatesDict objectForKey: @ "FarmGate"] не возвращает NSDictionary. Проверьте, какой тип.

0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.