/// <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); }
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; }
/// <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); }
/// <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); }
/// <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(); }