Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 15.12.2015, 20:33   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Dictionary

Проблема возникла.

Есть Dictionary<string,string> 100% не пустая, т.е key-value имеется, но при поиске значения по ключу говорит что такого ключа нет, хотя если на глаз, то значения совпадаю.

Как заполняю словарь:

public Dictionary<stringstringParseLang(string str) {
        
Dictionary<stringstringret = new Dictionary<stringstring>();
        
MultilangObject mo JsonUtility.FromJson<MultilangObject>(str);
        if (
mo == null)
            return 
null;
        foreach(
MultilangElementJSON e in mo.elements)
        {
            
Debug.Log(e.marker ":" e.text);
            
dictonary.Add(e.markere.text);
        }
        return 
ret;
    } 
Читаю так:
public string GetTranslate(string marker)
    {
        
string ret="";
        if (
dictonary.Count == 0)
            
Awake();
        if (!
dictonary.ContainsKey(marker))
            
Debug.LogAssertion(marker " not found!!");
        else
            
ret dictonary[marker];
        return 
ret;
    } 
Log:


UPD: с кодировкой тоже какая-то беда, но хотя бы @play должен был сработать

Первые, до загрузки манифеста - парсинг Json
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 15.12.2015, 22:00   #2
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Dictionary

Покажи свои MultilangObject и MultilangElementJSON, какой-то у тебя парсинг невнятный. Чому сразу в словарь не парсишь, какая-то логика еще в объекте?
(Offline)
 
Ответить с цитированием
Старый 15.12.2015, 22:53   #3
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Dictionary

Сообщение от Andvrok Посмотреть сообщение
Покажи свои MultilangObject и MultilangElementJSON, какой-то у тебя парсинг невнятный. Чому сразу в словарь не парсишь, какая-то логика еще в объекте?
http://pastebin.com/HDR72C10

Нельзя сразу. JsonUtility не держит сериализацию/десериализацию словарей и подобных IDictionary , только Энумерабле. XML не хочу, так как часть уже в json.

По этому я делаю сохранение: Dictionary -> MultilangObject,
Загрузку: MultilangObject -> Dictionary
который:
public class MultilangObject{    

public 
MultilangElementJSON[] elements;

}

public class 
MultilangElementJSON{    
   [
SerializeField]   
   public 
string marker
   [
SerializeField]  
   public 
string text;

Так как для JsonUtility нужен единичный объект, массив в любом виде не работает - выдает пустой json.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 15.12.2015, 23:12   #4
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Dictionary

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

Хочу что бы вы нашли и поняли на что я потратил 3 часа.

Завтра покажу, если лень всем будет.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Andvrok (16.12.2015)
Старый 16.12.2015, 01:08   #5
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Dictionary

Ты добавляешь объекты в dictonary, а возвращаешь пустой ret.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
RegIon (16.12.2015)
Старый 16.12.2015, 12:58   #6
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Dictionary

Сообщение от Andvrok Посмотреть сообщение
Ты добавляешь объекты в dictonary, а возвращаешь пустой ret.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 13.01.2016, 16:13   #7
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Dictionary

пользуясь случаем хочу передать привет спросить, возможно ли добавить/удалить в словарь (dictonary) элемент со смещением всех остальных?
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Старый 13.01.2016, 16:52   #8
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений
(для 450 пользователей)
Ответ: Dictionary

Сообщение от ant0N Посмотреть сообщение
пользуясь случаем хочу передать привет спросить, возможно ли добавить/удалить в словарь (dictonary) элемент со смещением всех остальных?
Что значит со смещением всех остальных ?
__________________
(Offline)
 
Ответить с цитированием
Старый 13.01.2016, 17:00   #9
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Dictionary

у меня есть таблица с 10 объектами (индексы от 1 до 10)
я хочу добавить новый элемент по по индексу 1, мне нужно чтобы индексы всех остальных объектов сместились на +1
Я как бы сделал это через циклы (2 штуки!), но может есть штатное решение?
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Старый 13.01.2016, 17:03   #10
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Dictionary

Т.е. ключом является int ?
Думаю, нет, так как идея Dictionary в том, что ключом является что угодно, а штатного решения для "чего угодно" для такой задачи быть не может.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ant0N (13.01.2016)
Старый 13.01.2016, 17:09   #11
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Dictionary

ну, нет так нет.
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Старый 13.01.2016, 18:24   #12
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Плохо Ответ: Dictionary

Сообщение от ant0N Посмотреть сообщение
у меня есть таблица с 10 объектами (индексы от 1 до 10)
я хочу добавить новый элемент по по индексу 1, мне нужно чтобы индексы всех остальных объектов сместились на +1
Я как бы сделал это через циклы (2 штуки!), но может есть штатное решение?
А зачем 2 цикла? О_о
public static void IndexedDictionaryAddthis Dictionary<intobjectdictionaryobject elementint additionIndex ) {
    for( var 
index additionIndexindex dictionary.Count 1index++ ) {
        
dictionary[index] = dictionary[index 1];
    }
    
dictionary[additionIndex] = element;

/offtop
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.

Последний раз редактировалось Taugeshtu, 13.01.2016 в 20:18. Причина: Пофиксил баг, лел.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Taugeshtu за это полезное сообщение:
ABTOMAT (13.01.2016), ant0N (13.01.2016), pax (14.01.2016), St_AnGer (13.01.2016)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:53.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com