Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Swift 使用fromCString从DS读取时,在展开可选值时意外发现nil_Swift_Sqlite_Null_Unsafe Pointers - Fatal编程技术网

Swift 使用fromCString从DS读取时,在展开可选值时意外发现nil

Swift 使用fromCString从DS读取时,在展开可选值时意外发现nil,swift,sqlite,null,unsafe-pointers,Swift,Sqlite,Null,Unsafe Pointers,我正在从一个数据库表读取数据,在该表的特定位置出现错误。我的sql是可以的,因为我已经可以从同一个表中读取,但是在特定的行中我得到一个错误,我想知道如何处理这个错误。我不是在寻找解决我的数据库问题的解决方案,我只是在寻找处理错误的方法,这样它就不会崩溃 我有以下代码: let unsafepointer=UnsafePointer<CChar>(sqlite3_column_text(statement, 2)); if unsafepointer != nil { sTex

我正在从一个数据库表读取数据,在该表的特定位置出现错误。我的sql是可以的,因为我已经可以从同一个表中读取,但是在特定的行中我得到一个错误,我想知道如何处理这个错误。我不是在寻找解决我的数据库问题的解决方案,我只是在寻找处理错误的方法,这样它就不会崩溃

我有以下代码:

let unsafepointer=UnsafePointer<CChar>(sqlite3_column_text(statement, 2));
if unsafepointer != nil {
    sText=String.fromCString(unsafepointer)! // <<<<<< ERROR
} else {
   sText="unsafe text pointer is nil !";
}
如何处理此错误,使我的应用程序不会崩溃?

let statementValue=sqlite3\u column\u text(语句,2)
let statementValue = sqlite3_column_text(statement, 2)
var sText = withUnsafeMutablePointer(&statementValue) {UnsafeMutablePointer<Void>($0)}
var sText=withUnsafeMutablePointer(&statementValue){UnsafeMutablePointer($0)}
另一种可能的解决方案是:

let unsafepointer=UnsafePointer<CChar>(sqlite3_column_text(statement, 2));
var sText = "unsafe text pointer is nil !";
if unsafepointer != nil{
    if let text = String.fromCString(unsafepointer) as String?{
        sText = text;
    }    
}
let unsafepointer=unsafepointer(sqlite3_column_text(语句,2));
var sText=“不安全的文本指针为零!”;
如果没有安全指针!=零{
如果让text=String.fromCString(unsafepointer)作为字符串{
sText=文本;
}    
}

我不明白。我仍然有同样的问题,在sText中,没有文本。sText是一个不可女性化的指针。如何处理错误?现在呢?您确定有有效的语句值吗?我在“if let…”语句中遇到语法错误:“条件绑定的初始值设定项必须具有可选类型,而不是“UnsafePointer”。我在Xcode 7.2银行帮忙。我可以使用“ciccioska”中的示例。您能否编辑您建议的答案,以扩展它的作用以及它如何处理OP?我在if语句中发现一个语法错误“条件绑定的初始值设定项必须具有可选类型,而不是'UnsafePointer'(也称为'UnsafePointer')”,非常感谢。很有帮助。嗨,米格尔-你能解释一下为什么这个答案比公认的答案好吗?
let unsafepointer=UnsafePointer<CChar>(sqlite3_column_text(statement, 2));
var sText = "unsafe text pointer is nil !";
if unsafepointer != nil{
    if let text = String.fromCString(unsafepointer) as String?{
        sText = text;
    }    
}
if sqlite3_column_text(statement, 2) != nil {                     
print("do something")
} else {
YourString = ""
}