我有以下字典我填寫了通過第三方對象解析的數據。詞典列表問題
它看起來像這樣這是我的解析類:
public string beaconMajor;
public string[] beaconValues;
public Dictionary<string, float> valueDictionary = new Dictionary<string, float>();
public string foo = "";
public void DistanceValue(string message)
{
foo = message.Split (',');
foreach (string b in foo)
{
beaconValues = beacon.Split('_');
beaconMajor = beaconValues[0];
string beaconDistance = beaconValues[1];
if(valueDictionary.ContainsKey(beaconMajor))
{
valueDictionary[beaconMajor] = float.Parse(beaconDistance);
}
else
{
valueDictionary.Add(beaconMajor, float.Parse(beaconDistance));
}
}
if (foo.Contains("-1"))
{
return;
}
}
然後在另一個類我在做與字典以下,只會向你展示一個條目,但也有不少,看起來像這樣:
if (foo_class.valueDictionary.ContainsKey ("key"))
{
beacon1Scale = float.Parse (foo_class.valueDictionary["key"].ToString());
}
現在我想要做的是命令這個詞典的價值,而不是關鍵。這些鍵是常量,但每隔幾秒鐘更改一次。我試過下面的代碼:
List<KeyValuePair<string, float>> list = foo_class.valueDictionary.ToList();
list.Sort
(delegate(KeyValuePair<string, float> val1, KeyValuePair<string, float> val2)
{
return val1.Value.CompareTo(val2.Value);
}
);
Debug.Log(list);
dictionaryString = list.ToString() + "\n";
但是當我運行它,我得到在Xcode以下消息:
System.Collections.Generic.List
1[System.Collections.Generic.KeyValuePair
2 System.String,系統。單] UnityEngine.Debug:Internal_Log(的Int32,字符串,對象) UnityEngine.Debug:日誌(對象)TriangulationScript:更新()
可有人請告訴我這個消息的原因是什麼?
我還在尋找到讓這本字典通過值自行解決,我甚至使用LINQ嘗試,但,這是在Xcode不相容的,我是在Xcode中JIT錯誤信息如下:
ExecutionEngineException:嘗試JIT編譯方法 'System.Linq.OrderedEnumerable1:GetEnumerator ()',同時使用--aot-only運行。
如果有人知道任何其他方式來做到這一點,請讓我知道。我已經花了幾天時間了。
更新
我用下面所建議的答案,並在xcode中給出這樣的信息:
ExecutionEngineException:試圖JIT編譯方法 「System.Linq.OrderedEnumerable
1<System.Collections.Generic.KeyValuePair
2>:的GetEnumerator() '而運行 - 只 - 只。在 System.Collections.Generic.List
1[System.Collections.Generic.KeyValuePair
2 [System.String,System.Single]] AddEnumerable (IEnumerable的1 enumerable) [0x00000] in <filename unknown>:0 at System.Collections.Generic.List
1 [System.Collections.Generic.KeyValuePair2[System.String,System.Single]]..ctor (IEnumerable
1集合)[0x00000]中:0 at System.Linq.Enumerable.ToList [KeyValuePair1 source) [0x00000] in:0 at TriangulationScript。更新() [0x00000]中:0
回滾編輯需要在xCode中編譯上述代碼,這就是爲什麼我不能使用LINQ。如果有人知道這樣做的方式,請告訴我。 – N0xus
OT:你如何在xcode中使用c#? – Teejay
xCode插入Unity。我所有的C#都是Unity的一面。 – N0xus