正确检查 nil sqlite 文本列

2024-03-02

我有一个分配给字符串的 sqlite 字符串列。我需要在分配之前确保它不为零。我正在这样做:

char *isNil = sqlite3_column_text(selectstmt, 2);
if(isNil != nil){
  myName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 2)];}

这给出了警告:

警告:初始化会丢弃指针目标类型中的限定符

正确的做法是什么?


当您忽略 const 时,您会收到警告。 API 定义为:

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);

您将返回值分配给 char*,因此您将删除 const。这就是您收到警告的原因。你应该尊重常量。

const unsigned char *isNil = ...

我并不是一个真正热衷于 Objective-C 的人,但我认为从风格上来说,将基本类型与 NULL 而不是 nil 进行比较是常见的做法。也不需要调用column_text两次。

const char *columnText = (const char *)sqlite3_column_text(selectstmt, 2);
if(columnText != NULL)
{
    myName = [NSString stringWithUTF8String: columnText ];
}

您可以在上面看到我已将 const unsigned char 指针转换为 constsigned char 指针。你应该确保自己知道何时抛弃警告是正确的做法。在这种情况下,转换为有符号字符是安全的。一般来说,永远不要放弃 const,因为无论是谁制作了该 API,都可能会做一些需要您将数据视为 const 的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正确检查 nil sqlite 文本列 的相关文章

  • iOS 7 键盘颜色闪烁

    在 iOS7 中 我将界面生成器中 UITextField 的键盘设置为深色样式 但是 每当我单击文本字段时 键盘最初显示为浅色 然后再转到深色样式 我怎样才能拥有它不这样做吗 这是iOS 7中的一个错误 我一直在处理同样的问题 它已在 i
  • CGColorRef 导致崩溃

    我的代码发生了崩溃 并且我一直跟踪到在传递 2 个 CGColorRefs 时发生崩溃的行 以下是对象 CGColorRef startColor UIColor colorWithWhite 0 92 alpha 1 0 CGColor
  • 如何让 iPhone 发出蜂鸣声?

    什么代码可以让我在 iPhone 上发出标准的蜂鸣声 好吧 这取决于您想要什么样的声音 以下是如何使用 AVFoundation 音频框架播放声音 import
  • 语言混合:模型和视图

    考虑开发一个应用程序 其中模型将使用 C 使用 Boost 编写 视图将使用 Objective C 使用 Cocoa Touch 编写 哪里有一些示例展示了如何集成 C 和 Objective C 来开发 iPhone 应用程序 直接从源
  • iTunes connect 不允许输入多行描述

    我刚刚向 App Store 提交了我的第一个应用程序 但 iTunes Connect 中的描述字段存在问题 它不允许我输入多行值 我已经尝试了一切 从不同的编辑器复制粘贴 手动输入等 如果有一行 例如 Hello world 则保存成功
  • cllocation 和 mkreversegeocoder

    我尝试使用 cllocation 和 mkreversegeocoder 检索城市名称 在我的 viewdidload 方法中 我是 cllocationmanager self locManager CLLocationManager a
  • -[MyClassName copyWithZone:] 无法识别的选择器发送到实例

    我的应用程序崩溃了 原因是 MyClassName copyWithZone 无法识别的选择器发送到实例 我有两节课 假设 Class1 和 Class2 Class1 看起来像 Class1 h interface Class1 NSOb
  • 将蒙版图像作为 PNG 文件写入磁盘

    基本上 我从网络服务器下载图像 然后将它们缓存到磁盘上 但在这样做之前 我想屏蔽它们 我正在使用每个人似乎都指出的屏蔽代码 可以在这里找到 http iosdevelopertips com cocoa how to mask an ima
  • SQLite 数据库安全

    我正在构建一个使用 Sqlite DB 的应用程序 用户可以将他们的信息输入数据库并检索它们 但是 我希望他们能够备份 sqlite 数据库 我所做的是将 sqlite 数据库放入文档文件夹中 以便他们可以使用 iTunes 将其检索出来
  • 如何开发iPhone MDM服务器?

    我刚刚阅读了有关适用于 iOS 设备的移动设备管理服务器的信息 但所有文档均指 第三方 MDM 服务器 我的问题是如何自己开发一个 第三方 MDM 服务器 我找不到任何关于此的文档 你有简单的方法和困难的方法 Easy way OSX Li
  • Three20 和 iOS 6 不工作

    我刚刚尝试了我的一个项目 其中包含 Three20 但它似乎无法编译 给我构建错误 似乎是因为一些 UITouch 界面发生了变化 想知道是否有快速修复方法可以做到这一点 看来问题是在这里 UITouch ivars 已从 iOS 6 SD
  • 如何在 UIView 中获取父导航控制器

    我创建了一个UITabBarController在我的应用程序委托中 其中每个选项卡栏项目都有不同的UINavigationController加载自定义的UIViewController带NIB 使用 pushViewController
  • 当应用程序从 iPhone 后台出现时,会调用什么方法?

    我知道当 iphone 应用程序进入后台时 会调用这些方法 void applicationDidEnterBackground UIApplication application void applicationWillResignAct
  • Corebluetooth 方法 scanForPeripheralsWithServices 在任何设备中都不适用于我。所有 github 示例均不适用于我的设备 ipod touch

    我正在开发蓝牙相关的应用程序 但我没有取得任何成功 在我的应用程序中 我想将我的 iDevice 与任何其他正在扫描的蓝牙设备连接 但使用 CBCentralManager 方法 scanForPeripheralsWithServices
  • iPhone 应用程序中的 Vimeo 视频

    我想知道是否有办法将 Vimeo 视频 嵌入 iPhone 应用程序中 对于 YouTube 视频 我使用包含 YouTube 视频正确嵌入代码的 Web 视图 然后 iPhone 的本机 YouTube 支持会将 Flash 播放器转换为
  • SQLite 导入选项卡文件:.import 是每行执行一次插入还是将它们与事务分组?

    我正在从选项卡文件导入数百万行 而 SQLite import mode 选项卡非常慢 我有三个索引 所以缓慢可能来自索引 但首先我想检查 import 是否添加将大量 所有行分组到单个提交中的行 我无法找到 import 如何工作的文档
  • 在 iPhone 应用程序中显示来自 RSS 源的内容

    我看过一些关于这个主题的教程 但它们都只讨论了一半 然后让人感到困惑 如何将 RSS feed 流式传输到 iPhone 应用程序中 我知道 xml 应该被读入 解析等 但随后我不确定如何显示我需要的信息 例如图像 嵌入视频等 如果有人能指
  • iPhone Objective-C 以编程方式将范围按钮添加到 UISearchBar

    我目前这段代码用于创建 UISearchBar 改编自之前的 stackoverflow 示例 UISearchBar searchBar UISearchBar alloc initWithFrame CGRectZero searchB
  • Sqlite3 查询在 iOS 8.2 下变得非常慢

    我制作了一个可以在应用程序内使用 sqlite 数据库的应用程序 在 iOS 8 2 之前 它工作得很好 但更新后 查询方法的工作速度慢了大约 100 倍 我试图查找有关此问题的信息 但尚未找到任何信息 有人有同样的经历吗 这是我的方法 到
  • iOS:如何实现像Android的startActivityForResult这样的行为

    我是一名 Android 开发人员 正在开发我们应用程序的 iOS 版本 我需要知道如何在 Android 上实现类似于 startActivityForResult 的行为 我需要显示一个新的视图控制器 然后在新的视图控制器关闭时将控制权

随机推荐