示例#1
0
    /// <summary>
    /// 通过数据表名字和数据表文本内容构造一个数据表对象
    /// </summary>
    /// <param name="tableName"> 数据表名字 </param>
    /// <param name="tableContent"> 数据表文本内容 </param>
    /// <returns> 数据表对象 </returns>
    public static CSVTable CreateTable(string tableName, string tableContent)
    {
        string content = tableContent.Replace("\r", "");

        string[] lines = content.Split('\n');
        if (lines.Length < 2)
        {
            Debug.LogError("The csv file is not csv table format.");
            return(null);
        }

        string keyLine = lines[0];

        string[] keys  = keyLine.Split(',');
        CSVTable table = new CSVTable(tableName, keys);

        for (int i = 1; i < lines.Length; i++)
        {
            string[] values = lines[i].Split(',');
            string   major  = values[0].Trim();
            Dictionary <string, string> tempAttributeDic = new Dictionary <string, string>();
            for (int j = 1; j < values.Length; j++)
            {
                string key   = keys[j].Trim();
                string value = values[j].Trim();
                tempAttributeDic.Add(key, value);
            }
            CSVDataObject dataObj = new CSVDataObject(major, tempAttributeDic, keys);
            table[dataObj.ID] = dataObj;
        }

        return(table);
    }
示例#2
0
    public void AddData(int state, int action)
    {
        CSVDataObject data = new CSVDataObject(state.ToString(),
                                               new Dictionary <string, string>()
        {
            { "action", action.ToString() },
        },
                                               new string[] { "state", "action" });

        _table[data.ID] = data;
    }
示例#3
0
    /// <summary>
    /// 通过数据对象主键获取数据对象
    /// </summary>
    /// <param name="dataMajorKey"> 数据对象主键 </param>
    /// <returns> 数据对象 </returns>
    private CSVDataObject GetDataObject(string dataMajorKey)
    {
        CSVDataObject data = null;

        if (_dataObjDic.ContainsKey(dataMajorKey))
        {
            data = _dataObjDic[dataMajorKey];
        }
        else
        {
            Debug.LogError("The table not include data of this key.");
        }

        return(data);
    }
示例#4
0
    /// <summary>
    /// 添加数据对象, 并将数据对象主键添加到主键集合中
    /// </summary>
    /// <param name="dataMajorKey"> 数据对象主键 </param>
    /// <param name="value"> 数据对象 </param>
    private void AddDataObject(string dataMajorKey, CSVDataObject value)
    {
        if (dataMajorKey != value.ID)
        {
            Debug.LogError("所设对象的主键值与给定主键值不同!设置失败!");
            return;
        }

        if (value.GetFormat() != GetFormat())
        {
            Debug.LogError("所设对象的的签名与表的签名不同!设置失败!");
            return;
        }

        if (_dataObjDic.ContainsKey(dataMajorKey))
        {
            Debug.LogError("表中已经存在主键为 '" + dataMajorKey + "' 的对象!设置失败!");
            return;
        }

        _dataObjDic.Add(dataMajorKey, value);
    }
示例#5
0
    /// <summary>
    /// 测试方法
    /// </summary>
    private void Test()
    {
        // 显示所有数据(以调试格式显示)
        Debug.Log(_table.ToString());

        // 显示所有数据(以存储格式显示)
        _display.text = _table.GetContent();

        // 拿到某一数据
        _display.text += "\n" + "1001的年龄: " + _table["1001"]["年龄"];
        // 拿到数据对象
        _display.text += "\n" + "1002的数据: " + _table["1002"].ToString();
        // 修改某一数据
        _table["1003"]["年龄"] = "10000";
        _display.text       += "\n" + "1003新的年龄: " + _table["1003"]["年龄"];

        // 添加一条数据
        CSVDataObject data = new CSVDataObject("1005",
                                               new Dictionary <string, string>()
        {
            { "姓名", "hahaha" },
            { "年龄", "250" },
            { "性别", "随便吧" },
        },
                                               new string[] { "编号", "姓名", "年龄", "性别" });

        _table[data.ID] = data;
        _display.text  += "\n" + "新添加的1005的数据: " + _table["1005"].ToString();

        // 删除数据
        _table.DeleteDataObject("1001");
        _table.DeleteDataObject("1002");
        _display.text += "\n" + "删了两个之后:" + "\n" + _table.GetContent();

        // 删除所有数据
        _table.DeleteAllDataObject();
        _display.text += "\n" + "还剩下:" + "\n" + _table.GetContent();
    }