Objective c 线程1:程序接收信号;SIGBRT";
我正在iOS5上开发sqlite数据库。我的应用程序所做的是在文本字段中获取字符串并将其保存到数据库中。当我运行应用程序时,它崩溃并发出以下警告: 线程1:程序接收信号“SIGBRT” 它在main.m中给出了这一点,这一行:Objective c 线程1:程序接收信号;SIGBRT";,objective-c,ios5,sqlite,xcode4.2,Objective C,Ios5,Sqlite,Xcode4.2,我正在iOS5上开发sqlite数据库。我的应用程序所做的是在文本字段中获取字符串并将其保存到数据库中。当我运行应用程序时,它崩溃并发出以下警告: 线程1:程序接收信号“SIGBRT” 它在main.m中给出了这一点,这一行: return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 有人能帮我吗?非常感谢(我使用的是xcode 4.2 以下是编译器表示发生断言失败的方法 - (void
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
有人能帮我吗?非常感谢(我使用的是xcode 4.2
以下是编译器表示发生断言失败的方法
- (void) addstrings{
if(addStmt == nil) {
const char *sql = "insert into strings(strings) Values(?)";
if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}
sqlite3_bind_text(addStmt, 1, [strings UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
//SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid
strID = sqlite3_last_insert_rowid(database);
//Reset the add statement.
sqlite3_reset(addStmt);
}
在没有更多信息的情况下,不可能准确地说出程序中发生了什么,但是调用abort()最常见的原因是:
几乎在所有情况下,调试控制台都会为您提供有关调用abort()的原因的更多信息,因此请务必查看那里。此
SIGABRT
错误可能在各种情况下发生
就像您试图在不打开DB
的情况下关闭DB
,或者试图在不打开DB
的情况下向DB
写入一些值一样
或者可能有几个原因,所以在这里发布一些代码。通过“将其保存到数据库”,你是指直接调用SQLite,还是使用CoreData?在这两种情况下,在保存点附近查看相关代码都会有所帮助。我使用的是SQLite 3@wadesworld。我已经检查了很多次代码,但没有任何线索:(你能给问题添加堆栈跟踪吗?调试控制台告诉我断言失败了。你能告诉我在这种情况下可能出了什么问题吗?另外,我使用的是ARC启用,所以我没有使用任何explicite版本或delloc等。你能指导我吗?请再次查看问题。我已经编辑了它并做了一些更改。我编辑了。)编辑了问题并添加了编译器发现错误的方法的代码。请指导我问题所在。谢谢。
const char*sql=“插入字符串(字符串)值(?);
什么值将代替(?)
在哪里得到断言失败?在创建add语句或插入数据时?代替(?),文本字段中字符串的值将被保存。执行NSLog(“sql查询=%@”,sql)
并复制此查询并将其放入sqlite中,然后检查其是否工作?