【问题标题】:NSString declarationNSString 声明
【发布时间】:2012-01-06 13:27:33
【问题描述】:

我在我的应用程序中使用 SQLite 数据库,我需要从表 (UTF8 Cyrilic) 中获取数据。这个我试过2种方法

NSString *aName = [NSString stringWithFormat:@"%s",(char *)sqlite3_column_text(compiledStatement, 1)];

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

这个。第一个从表中获取数据但编码错误。第二个没有给我任何结果和控制台显示

*** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'*** ?> [NSString stringWithUTF8String:]: NULL cString'

我应该在哪里搜索问题以及如何正确使用编码?

【问题讨论】:

  • 将语句分成两部分以简化调试。首先将 sql 放入 unsigned char *,然后放入 NSString *
  • 您确定该列不为空吗?

标签: objective-c ios sqlite nsstring


【解决方案1】:

试试

const char* str = (const char*)sqlite3_column_text(compiledStatement, 1)]
NSString* string = [NSString stringWithCString:str encoding:NSUTF8StringEncoding];

并确保您使用相同的方法存储日期:

const char* str = [string cStringUsingEncoding:NSUTF8StringEncoding];

【讨论】:

  • 你能告诉我更多关于你的消息的第二部分吗:>并确保你用同样的方法存储日期:const char* str = [string cStringUsingEncoding:NSUTF8StringEncoding];
  • 在 SQLite 中存储字符串时,必须将 NSString 转换为 C-string。您可以通过以下代码进行操作:const char* str = [string cStringUsingEncoding:NSUTF8StringEncoding];
猜你喜欢
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多