forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   Dictionary (http://forum.boolean.name/showthread.php?t=20124)

RegIon 15.12.2015 20:33

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

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

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

PHP код:

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;
    } 

Читаю так:
PHP код:

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

Andvrok 15.12.2015 22:00

Ответ: Dictionary
 
Покажи свои MultilangObject и MultilangElementJSON, какой-то у тебя парсинг невнятный. Чому сразу в словарь не парсишь, какая-то логика еще в объекте?

RegIon 15.12.2015 22:53

Ответ: Dictionary
 
Цитата:

Сообщение от Andvrok (Сообщение 302663)
Покажи свои MultilangObject и MultilangElementJSON, какой-то у тебя парсинг невнятный. Чому сразу в словарь не парсишь, какая-то логика еще в объекте?

http://pastebin.com/HDR72C10

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

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

public class MultilangObject{    

public 
MultilangElementJSON[] elements;

}

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


Так как для JsonUtility нужен единичный объект, массив в любом виде не работает - выдает пустой json.

RegIon 15.12.2015 23:12

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

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

Завтра покажу, если лень всем будет.

Andvrok 16.12.2015 01:08

Ответ: Dictionary
 
Ты добавляешь объекты в dictonary, а возвращаешь пустой ret.

RegIon 16.12.2015 12:58

Ответ: Dictionary
 
Цитата:

Сообщение от Andvrok (Сообщение 302670)
Ты добавляешь объекты в dictonary, а возвращаешь пустой ret.

:super:

ant0N 13.01.2016 16:13

Ответ: Dictionary
 
пользуясь случаем хочу передать привет спросить, возможно ли добавить/удалить в словарь (dictonary) элемент со смещением всех остальных?

h1dd3n 13.01.2016 16:52

Ответ: Dictionary
 
Цитата:

Сообщение от ant0N (Сообщение 303269)
пользуясь случаем хочу передать привет спросить, возможно ли добавить/удалить в словарь (dictonary) элемент со смещением всех остальных?

Что значит со смещением всех остальных ?

ant0N 13.01.2016 17:00

Ответ: Dictionary
 
у меня есть таблица с 10 объектами (индексы от 1 до 10)
я хочу добавить новый элемент по по индексу 1, мне нужно чтобы индексы всех остальных объектов сместились на +1
Я как бы сделал это через циклы (2 штуки!), но может есть штатное решение?

ABTOMAT 13.01.2016 17:03

Ответ: Dictionary
 
Т.е. ключом является int ?
Думаю, нет, так как идея Dictionary в том, что ключом является что угодно, а штатного решения для "чего угодно" для такой задачи быть не может.

ant0N 13.01.2016 17:09

Ответ: Dictionary
 
ну, нет так нет.

Taugeshtu 13.01.2016 18:24

Ответ: Dictionary
 
Цитата:

Сообщение от ant0N (Сообщение 303271)
у меня есть таблица с 10 объектами (индексы от 1 до 10)
я хочу добавить новый элемент по по индексу 1, мне нужно чтобы индексы всех остальных объектов сместились на +1
Я как бы сделал это через циклы (2 штуки!), но может есть штатное решение?

А зачем 2 цикла? О_о
PHP код:

public static void IndexedDictionaryAddthis Dictionary<intobjectdictionaryobject elementint additionIndex ) {
    for( var 
index additionIndexindex dictionary.Count 1index++ ) {
        
dictionary[index] = dictionary[index 1];
    }
    
dictionary[additionIndex] = element;


/offtop


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot