【问题标题】:how to remove error "[NSString stringWithUTF8String:]: NULL cString' "?如何删除错误“[NSString stringWithUTF8String:]: NULL cString'”?
【发布时间】:2011-06-25 11:38:52
【问题描述】:

我正在创建一个sqlite3 test3.sql 数据库, 把桌子做成

CREATE TABLE rest (name VARCHAR(100), price VARCHAR(100));

表已成功创建,但现在当我使用插入和检索数据的方法时,出现错误,,,

错误在线

NSString *str = [NSString stringWithUTF8String:
                 (char *)sqlite3_column_text(compiledStatement, 1)];

错误是+[NSString stringWithUTF8String:]: NULL cString'

这是什么错误,如何消除?

【问题讨论】:

    标签: ios iphone database sqlite


    【解决方案1】:

    表示 sqlite3_column_text 返回 NULL。当列为 NULL 时返回 NULL。

    【讨论】:

      【解决方案2】:

      而不仅仅是拥有

      ... = [NSString stringWithUTF8String:
             (char *)sqlite3_column_text(compiledStatement, 15)]
      

      你想使用类似的东西

      ... = ((char *)sqlite3_column_text(compiledStatement, 15)) ? 
            [NSString stringWithUTF8String:
             (char *)sqlite3_column_text(compiledStatement, 15)] : nil;
      

      【讨论】:

        【解决方案3】:

        使用三元运算符从数据库中获取值后,您必须检查该值是否为 nil。否则程序仍然会崩溃。

        NSString *retrievedString = ((char *)sqlite3_column_text(statement, 15)) ? 
          [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 15)] : 
          nil;
        
        if(retrievedString == nil){
          [allSteps addObject:@""];
        } else {
          [allSteps addObject:retrievedString];
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多