gpt4 book ai didi

swift - "_"不可转换为 Int32 - Swift

转载 作者:搜寻专家 更新时间:2023-11-01 06:44:47 26 4
gpt4 key购买 nike

收到此错误,但不明白为什么。

下面这一行有效。请注意,settingVersion 和 settingRelease 都是字符串:

let isInserted = sharedInstance.database!.executeUpdate(sqlStatement, withArgumentsInArray: [settingRecord.settingVersion, settingRecord.settingRelease)

但是如果我在混合中添加一个 Int32,其中 settingsTimesUsed 是一个 Int32,我会得到“_”不可转换为 Int32 错误。

let isInserted = sharedInstance.database!.executeUpdate(sqlStatement, withArgumentsInArray: [settingRecord.settingVersion, settingRecord.settingRelease, settingRecord.settingTimesUsed])

如果我将最终项目完全明确地作为 Int32,我也会遇到同样的错误,例如

let a = 1 as Int32
let isInserted = sharedInstance.database!.executeUpdate(sqlStatement, withArgumentsInArray: [settingRecord.settingVersion, settingRecord.settingRelease, a])

任何想法。

最佳答案

添加 Int32 会尝试将其从 [String] 移动到 [AnyObject]。 Swift 永远不会自动推断AnyAnyObject。如果需要,您必须明确说明。在这种情况下,这将是:

let settings: [AnyObject] = [settingRecord.settingVersion, settingRecord.settingRelease, settingRecord.settingTimesUsed]
let isInserted = sharedInstance.database!.executeUpdate(sqlStatement, withArgumentsInArray: settings)

也就是说,我会确保您真的想要它。这会在运行 executeUpdate 时抛出类型安全。

如果这是一个 ObjC 接口(interface)(通常是类型不安全的),那么它实际上可能需要一个 NSArray。在这种情况下,您可以通过调用来显式:

...withArgumentsInArray: NSArray(objects: settingRecord.settingVersion, settingRecord.settingRelease, settingRecord.settingTimesUsed))

关于swift - "_"不可转换为 Int32 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31615083/

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