【问题标题】:App Crash when opening Database in Iphone在 Iphone 中打开数据库时应用程序崩溃
【发布时间】:2012-01-17 13:13:26
【问题描述】:

我正在使用 FMDB APIS 通过以下链接在我的项目中使用数据库:https://github.com/ccgus/fmdb

在第一步中,我创建了 FMDatabase 的对象并链接了数据库:

FMDatabase *dbObject = [FMDatabase databaseWithPath:dbPath];

现在我使用以下代码打开数据库:

 if (![dbObject open]) {
    NSLog(@"Could not Open Database");
}else {
    NSLog(@"Database Opened!");
    [dbObject executeUpdate:@"create table user(id integer primary key autoincrement, f_name text, l_name text, session_id text)"];
    [dbObject close];
}   

现在我想从字段中将数据写入按钮的单击上。我编写以下代码:

if (![dbObject open]) {
    NSLog(@"Could not Open Database");
}else {
    NSLog(@"Database Opened!");
    [dbObject executeUpdate:@"insert into user(f_name, l_name, session_id) values(?,?,?)",loginObject.fName, loginObject.lName, loginObject.sessionId,nil];
    [dbObject close];
}

现在当我在这里重新打开数据库时。在同一个视图控制器中。它给了我以下错误。 请注意第一次打开数据库,下一次不打开。我不知道有什么问题。请指导。

我得到的错误是:

[NSCFString open]: unrecognized selector sent to instance 0x4e21630

【问题讨论】:

    标签: iphone sqlite


    【解决方案1】:

    您似乎在某些时候没有保留dbObject。错误消息表明您正在将open 消息发送到NSString 的实例。这意味着曾经包含 FMDatabase 对象的内存现在被字符串占用了。

    【讨论】:

    • 如果你在一个属性中有值(你没有在上面的代码中),那么它应该被设置为retain,你应该用self.dbObject = ...符号分配给它。
    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多