Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SwiftData(SQLite包装器)被Swift 3.0破坏_Ios_Swift_Sqlite - Fatal编程技术网

Ios SwiftData(SQLite包装器)被Swift 3.0破坏

Ios SwiftData(SQLite包装器)被Swift 3.0破坏,ios,swift,sqlite,Ios,Swift,Sqlite,我正在使用SwiftData访问SQLite SwiftData是一个用Swift编码的SQLite包装器。在Swift 3.0和XCode 8之后,以下行被打断。我是斯威夫特的不速之客,因此我非常感谢您帮助修复损坏的部件: let text = UnsafePointer<Int8>(sqlite3_column_text(statement, index)) 结果到:“!=”生成“Bool”,而不是预期的上下文结果类型“AnyObject” let text=UnsafePo

我正在使用SwiftData访问SQLite

SwiftData是一个用Swift编码的SQLite包装器。在Swift 3.0和XCode 8之后,以下行被打断。我是斯威夫特的不速之客,因此我非常感谢您帮助修复损坏的部件:

let text = UnsafePointer<Int8>(sqlite3_column_text(statement, index))
结果到:“!=”生成“Bool”,而不是预期的上下文结果类型“AnyObject”

let text=UnsafePointer(sqlite3\u column\u text(语句、索引))
结果为:“'init'不可用:使用'withMemoryRebound(to:capacity:_')将内存临时视为另一种与布局兼容的类型。”

0中i:Int32的
结果到:“变异运算符的左侧不可变:”…sqlite3\u column\u int(语句、索引)返回一个
Int32

sqlite3_column_int(statement, index) != 0
是一个布尔值,因此如果 需要一个(可选)
AnyObject
。您可以将整数包装为 一个
NSNumber

func getColumnValue(_ statement: OpaquePointer, index: Int32, type: String) -> AnyObject? {
    let val = sqlite3_column_int(statement, index)
    return NSNumber(value: val)
}
另一个选择是

func getColumnValue(_ statement: OpaquePointer, index: Int32, type: String) -> AnyObject? {
    return sqlite3_column_int(statement, index) as AnyObject
}
因为在Swift 3中,任何东西都可以转换为
AnyObject
。 不同之处在于,在第二种解决方案中,对象只能是 转换回原始数字类型
Int32
,但不转换为
Int
或任何其他整数类型

有关其他问题,请参阅


有关
sqlite3\u列\u text的问题,请参阅。最后一个问题是“!=”产生“Bool”,而不是预期的上下文结果类型“AnyObject”的重复(为什么循环中存在
+=1
)“问题我们需要了解更多的上下文:函数返回什么?@MartinR抱歉,忘记添加源代码到github的链接。请参阅编辑的文章。我自己也在想“+=1”。@MartinR对于
!=products Bool,而不是预期的上下文结果类型AnyObject?
函数是(在XCode Swift 3.0迁移工具之后)
func getColumnValue(uu语句:OpaquePointer,索引:Int32,类型:String)->AnyObject?{
for i: Int32 in 0 ..< columnCount += 1 {
sqlite3_column_int(statement, index) != 0
func getColumnValue(_ statement: OpaquePointer, index: Int32, type: String) -> AnyObject? {
    let val = sqlite3_column_int(statement, index)
    return NSNumber(value: val)
}
func getColumnValue(_ statement: OpaquePointer, index: Int32, type: String) -> AnyObject? {
    return sqlite3_column_int(statement, index) as AnyObject
}