gpt4 book ai didi

swift - 如何将值从 "String: Any Object"存储到空字符串数组

转载 作者:行者123 更新时间:2023-11-28 07:49:16 25 4
gpt4 key购买 nike

我收到以下警告:

"Cannot assign value of type '[String : AnyObject]' to type 'String' "

对于以下行:

TrueData[counter] = newRow

TrueData 初始化为:

var TrueData = [String]()

newRow被初始化为:

var newRow = [String:AnyObject]()

newRow 必须是 AnyObject 那么如何在 for 循环的每次迭代后将其值存储在字符串数组中(代码通过 CSV 文件排序)?

这是评论中建议的整个代码块:

func convertCSV(stringData:String) -> [[String:AnyObject]] {
//for date formatting
var importDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = importDateFormat
var TrueData = [String]()
//dateFormatter.timeZone = NSTimeZone(abbreviation: "GMT")

let rows = cleanRows(stringData: stringData)
if rows.count > 0 {
//data = []
//var TrueData = [String: Any]()
var columnTitles:[String] = []
var columnType:[String] = ["NSDate","Int","Int"]
var counter = 0


columnTitles = cleanFields(oldString: rows.first!)
for row in rows{
let fields = cleanFields(oldString: row)
if fields.count != columnTitles.count {continue}
var newRow = [String:AnyObject]()
for index in 1..<fields.count{ let column = columnTitles[index];
let field = fields[index]; switch columnType[index]
{ case "Int": newRow[column] = Int(field) as AnyObject case
"NSDate": guard let newField = dateFormatter.date(from: field)
else { print ("\(field) didn\'t convert");
continue };
newRow[column] = newField as AnyObject default: //default keeps as
string
newRow[column] = field as AnyObject } };


TrueData[counter] = newRow
counter = counter + 1
} }

else { print("No data in file") };
return TrueData };

最佳答案

如果你想将 trueData 保存为行数组,那么你可能需要像下面这样使用

var TrueData = [[String:AnyObject]]()

var newRow = [String:AnyObject]()

TrueData.append(newRow)

但是如果你想使用 TrueData 作为字典,那么像下面这样,

let counter = "key"

var TrueData = [String: String]()

var newRow = [String:AnyObject]()

TrueData[counter] = newRow

[更新]

我替换了两个地方,一个声明区和添加到数组的地方。只是尝试使用它。

func convertCSV(stringData:String) -> [[String:AnyObject]] {
//for date formatting
var importDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = importDateFormat

/* ------- REPLACED: var TrueData = [String]() ------------- */
var TrueData = [[String:AnyObject]]() /* */
/* --------------------- REPLACED --------------------------- */

//dateFormatter.timeZone = NSTimeZone(abbreviation: "GMT")

let rows = cleanRows(stringData: stringData)
if rows.count > 0 {
//data = []
//var TrueData = [String: Any]()
var columnTitles:[String] = []
var columnType:[String] = ["NSDate","Int","Int"]
var counter = 0


columnTitles = cleanFields(oldString: rows.first!)
for row in rows{
let fields = cleanFields(oldString: row)
if fields.count != columnTitles.count {continue}
var newRow = [String:AnyObject]()
for index in 1..<fields.count{ let column = columnTitles[index];
let field = fields[index]; switch columnType[index]
{ case "Int": newRow[column] = Int(field) as AnyObject case
"NSDate": guard let newField = dateFormatter.date(from: field)
else { print ("\(field) didn\'t convert");
continue };
newRow[column] = newField as AnyObject default: //default keeps as string
newRow[column] = field as AnyObject } };


/* ----------- REPLACED: TrueData[counter] = newRow ---------------- */
TrueData.append(newRow) /* */
/* --------------------- REPLACED --------------------------- */
counter = counter + 1
} }

else { print("No data in file") };
return TrueData
};

关于swift - 如何将值从 "String: Any Object"存储到空字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50122734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com