【问题标题】:NSArrayController: comparison between pointer and integer nullNSArrayController:指针和整数 null 之间的比较
【发布时间】:2015-09-03 01:24:55
【问题描述】:

我正在 Xcode 控制台中检查 NSArrayController 的计数,我得到了这个:

(lldb)po [_myArrayAC.content count]
 nil

但是如果我尝试检查该值是否为零:

 if ([_myArrayAC.content count] != nil)

我收到此错误:

comparison between pointer and integer null

我的问题是如何检查我的 NSArrayController 计数是否为空?

非常感谢您的帮助。

【问题讨论】:

  • _myArrayAC == nil?

标签: cocoa xcode6 nsarray nsarraycontroller


【解决方案1】:

NSArrayController 当然是由 NSArray 支持的 您应该通过 mappedObjects 属性请求数组。

NSArray 是一个对象,所以它可以为 nil。 nil 可以在 Objective-C 中接收消息

NSArray 有一个 count 属性,它是一个 NSUInteger >= 0

您可以检查数组是否为零。 (没有数组。一个指向 nil 的指针。)

您可以检查计数。计数总是一个 NSInteger。

【讨论】:

  • ...所以调试器正在生成nil,因为数组是nil?我不明白这是如何回答这个问题的。
  • 哈。完全忘记输入那部分
  • 使用排列对象属性会告诉你是否有一个数组。尽管您将 content 属性设置为 NSMutableArray,但它应该返回一个只读的 NSArray
  • arrangedObjects 是过滤和排序的内容。为什么要检查排列对象?
  • 我认为使用更具体的 API 更有意义。这更有可能是您正在查看的内容。如果您认为内容 obj 可能为零,请检查。如果您想查看支持集合对象的内容,请直接检查并绕过控制器。如果是核心数据谁知道
【解决方案2】:

count 返回一个整数,而不是指向对象的指针。您应该使用 p(打印)而不是 po(打印对象)。 整数也可以是 0(零),而不是 nil 或 NULL。如果要检查 count 是否为 0,则应将其与 0 进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多