【问题标题】:Checking the values of a dictionary against a string being read in externally根据外部读取的字符串检查字典的值
【发布时间】:2013-11-12 21:34:34
【问题描述】:

我已经创建了一个这样的字典:

public Dictionary<string, string> myValues = new Dictionary<string, string>();

然后在我的启动方法中,我会像这样填写我的字典:

void Start()
{
    myValues.Add("device one", "11111111111111");
}

我要做的是检查我在字典中创建的值,在上面的示例中,它将是1111111111111,与远程读取的字符串值相对应。我正在做的检查是这样的:

void Update () 
{
    // Spawn a model based on the signal the ipad has recievied.
    if( myValues["device one"] == outputContent.text)
    {
        Instantiate(model1, new Vector3(-2.5f, 3.0f,0), Quaternion.identity);
    }       
}

消息是从一个包装类中解析出来的,该类从原生 ipad 中获取信息并将其直接传递给 unity。获取消息的方法是这样的:

private void AppendString(string message) 
{
    outputContent.text += "\n" + message;
}

现在,问题是,传递的消息有效。当我运行我的代码时,屏幕上会填满我想要的信息。但是当我尝试检查我存储的值与发送的值时,什么都没有发生。

我获得初始硬编码值的方法是首先从 AppendString 方法中读取它们。我已经仔细检查了它们,以确保我得到了正确的信息。

谁能告诉我,如果我将字典中保存的值与正在读取的值进行比较,是否正确?

【问题讨论】:

    标签: c# string dictionary


    【解决方案1】:

    有几个“可疑”点。

    在这里,您添加\n,您确定它包含在字典的值中吗?

    outputContent.text += "\n" + message;
    

    另外,请确保正确比较字符串。它甚至可能是一个大小写问题,这让我很痛苦。例如尝试:

    if(String.Equals(myValues["device one"], outputContent.text, StringComparison.OrdinalIgnoreCase)
    

    【讨论】:

      【解决方案2】:

      最好替换下一行

       if( myValues["device one"] == outputContent.text)
      

      与:

       if( myValues["device one"].Equals(outputContent.text))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-16
        • 1970-01-01
        • 1970-01-01
        • 2016-08-20
        相关资源
        最近更新 更多