Question by 
               Hylders · Aug 16, 2017 at 12:24 PM · 
                stringintconvertdictionary  
              
 
              Don't know how to convert a string value to add into a int dictionnary.
After spliting a string input into multiple string values, I would like to store they as int values in a dictionary. I think my code is pretty much ok, except the fact that I don't know how to convert thoses splited values before adding these.
Here is my script:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class loadArena : MonoBehaviour {
 public string rawMap;
 string inputMap;
 public Dictionary<int, int> map = new Dictionary<int, int> ();
 void Start () {
     rawMap = null;
 }
 void OnGUI () {
     if (rawMap == null) {
         inputMap = GUI.TextField (new Rect (Screen.width / 2 - 60, Screen.height / 2 - 20, 120, 30), inputMap);
         if (GUI.Button (new Rect (Screen.width / 2 - 60, Screen.height / 2 + 20, 120, 30), "Load map")) {
             rawMap = inputMap;
             ReadMap ();
         }
     }
 }
 void ReadMap () {
     foreach (string argument in rawMap.Split (';')) {
         var pair = argument.Split (':');
         map[pair[0]] = pair[1];
     }
     foreach (string key in map.Keys) {
         Debug.Log (string.Format ("{0} = {1}", key, map[key]));
     }
 }
}
               Comment
              
 
               
               
               Best Answer 
              
 
              Answer by haruna9x · Aug 16, 2017 at 04:21 PM
You have a dictionary with a key and a value of type int, but then you use it as a string.
 using System;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Test : MonoBehaviour
 {
     public string rawMap;
     string inputMap;
     public Dictionary<int, int> map = new Dictionary<int, int>();
     void Start()
     {
         rawMap = null;
     }
     void OnGUI()
     {
         if (rawMap == null)
         {
             inputMap = GUI.TextField(new Rect(Screen.width / 2 - 60, Screen.height / 2 - 20, 120, 30), inputMap);
             if (GUI.Button(new Rect(Screen.width / 2 - 60, Screen.height / 2 + 20, 120, 30), "Load map"))
             {
                 rawMap = inputMap;
                 ReadMap();
             }
         }
     }
     void ReadMap()
     {
         foreach (string argument in rawMap.Split(';'))
         {
             var pair = argument.Split(':');
             map[Int32.Parse(pair[0])] = Int32.Parse(pair[1]);
         }
         foreach (int key in map.Keys)
         {
             Debug.Log(string.Format("{0} = {1}", key, map[key]));
         }
     }
 }
Thanks! It works; I just had to type "System.Int32.Parse()" ins$$anonymous$$d of "Int32.Parse()" and now everything is fine.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                