使用 fromCString 从 DS 读取时解包 Optional 值时意外发现 nil
unexpectedly found nil while unwrapping an Optional value while reading from DS with fromCString
我正在从 dbtable 读取数据,但在 table 的特定位置出现错误。我的 sql 没问题,因为我已经可以从同一个 table 中读取数据,但是在特定的行中出现错误,我想知道如何处理这个错误。我不是在寻找解决我的数据库问题的解决方案,我只是在寻找处理错误的方法,这样它就不会崩溃。
我有以下代码:
let unsafepointer=UnsafePointer<CChar>(sqlite3_column_text(statement, 2));
if unsafepointer != nil {
sText=String.fromCString(unsafepointer)! // <<<<<< ERROR
} else {
sText="unsafe text pointer is nil !";
}
我收到一个错误:
"fatal error: unexpectedly found nil while unwrapping an Optional value"
在标有 <<<<<< ERROR
的行。
不安全指针的值不是nil
:
pointerValue : 2068355072
如何处理此错误,使我的应用程序不会崩溃?
let statementValue = sqlite3_column_text(statement, 2)
var sText = withUnsafeMutablePointer(&statementValue) {UnsafeMutablePointer<Void>([=10=])}
另一种可能的解决方案是:
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 = ""
}
我正在从 dbtable 读取数据,但在 table 的特定位置出现错误。我的 sql 没问题,因为我已经可以从同一个 table 中读取数据,但是在特定的行中出现错误,我想知道如何处理这个错误。我不是在寻找解决我的数据库问题的解决方案,我只是在寻找处理错误的方法,这样它就不会崩溃。
我有以下代码:
let unsafepointer=UnsafePointer<CChar>(sqlite3_column_text(statement, 2));
if unsafepointer != nil {
sText=String.fromCString(unsafepointer)! // <<<<<< ERROR
} else {
sText="unsafe text pointer is nil !";
}
我收到一个错误:
"fatal error: unexpectedly found nil while unwrapping an Optional value"
在标有 <<<<<< ERROR
的行。
不安全指针的值不是nil
:
pointerValue : 2068355072
如何处理此错误,使我的应用程序不会崩溃?
let statementValue = sqlite3_column_text(statement, 2)
var sText = withUnsafeMutablePointer(&statementValue) {UnsafeMutablePointer<Void>([=10=])}
另一种可能的解决方案是:
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 = ""
}