Ios NSIndexPath无法将项、节或行识别为属性

Ios NSIndexPath无法将项、节或行识别为属性,ios,uicollectionview,uicollectionviewcell,nsindexpath,Ios,Uicollectionview,Uicollectionviewcell,Nsindexpath,当iOS 7.1发送my viewController时: - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath indexPath对象无法识别以下属性:项、节或行。预期值为节=0,项=0 调试器显示: **indexPath NSIndexPath * 0xc00000000000001

当iOS 7.1发送my viewController时:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView 
    cellForItemAtIndexPath:(NSIndexPath *)indexPath
indexPath对象无法识别以下属性:项、节或行。预期值为节=0,项=0

调试器显示:

**indexPath NSIndexPath *   0xc000000000000016

 NSObject       
_indexes    NSUInteger *    NULL    
  *_indexes     
_length     
_reserved   void *  NULL
日志报告:

(lldb) po indexPath
<NSIndexPath: 0xc000000000000016> {length = 2, path = 0 - 0}
(lldb) po indexPath.item
error: property 'item' not found on object of type 'NSIndexPath *'
error: 1 errors parsing expression
(lldb) po indexPath.row
error: property 'row' not found on object of type 'NSIndexPath *'
error: 1 errors parsing expression
(lldb) po indexPath.section
error: property 'section' not found on object of type 'NSIndexPath *'
error: 1 errors parsing expression****
(lldb)po indexath
{length=2,path=0-0}
(lldb)采购订单indexath.item
错误:在“nsindepath*”类型的对象上找不到属性“item”
错误:1解析表达式时出错
(lldb)po indexath.row
错误:在“nsindepath*”类型的对象上找不到属性“row”
错误:1解析表达式时出错
(lldb)采购订单第节
错误:在“nsindepath*”类型的对象上找不到属性“section”
错误:1解析表达式时出错****

知道为什么会发生这种情况以及如何处理吗?

不要使用getter/setter点语法,请使用括号:

  • po(int)[索引行]
  • po(int)[索引部分]
  • 请注意,
    (int)
    是将行/节打印为整数而不是十六进制所必需的。可以找到LLDB的其他此类有用的格式化参数

    编辑

    对基础框架的快速覆盖提供了索引路径结构,它与NSnDestPoad类桥接。IndexPath值类型提供了与NSIndexPath引用类型相同的功能,这两种类型可以在与Objective-CAPI交互的Swift代码中互换使用。这种行为类似于Swift桥如何将标准字符串、数字和集合类型对应到相应的基础类。

  • po索引行
  • 采购订单索引部分
  • 按预期工作。关于
    p
    po
    的评论仍然有效


    值得注意的是,您可以在Swift中使用
    indepath
    ,而不是nsindepath,如中所述。

    为什么要使用po?NSIndexPath的结果
    nsu整数
    ,或
    long
    整数
    ,而不是对象

    p表示打印,po表示打印对象

    `nsindepath是一个对象。它的内容不是

    使用p,而不是po

    p[indexPath部分]

    p[indexPath行]

    p indexath.section

    p indexath.row

    我总是犯同样的错误


    注意:如果使用
    UIViewController
    并将其扩展为具有UITableViewController委托和数据源,请确保将
    UITableView.h
    UIKit
    导入头文件

    此文件将扩展名添加到nsindepath,以便可以使用row和section。如果不导入声明它们的文件,您会发疯,想知道为什么
    indexpath.row
    indexpath.section
    不起作用


    如果您想在
    UITableViewController
    外部访问
    nsindepath
    行和
    部分,您需要进行这些导入才能访问这些扩展。

    您可以尝试一下,它对我来说非常适合:

    po (int)[indexPath row]
    

    你能添加你的代码吗?很难看出到底发生了什么这是代码。我的意思是,我显示的结果是在输入方法之后立即显示的。没有其他事情发生。也许我不理解这个问题。您只放置了方法名-(UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath,而没有剩余的代码。我认为有一些错误。无论如何,请检查您是否将标识符放入您的单元格。我已经建立了一些collectionView和tableview,但根本没有发现这个问题。谢谢你。问题在别处。我不知道为什么日志显示出如此奇怪的结果。根据你的建议,这个问题对我来说更清楚了。检查!奇怪的是,这是什么?我使用section和item引用了一个数组数组,但第二个“数组”实际上是一个对象,其属性是我试图访问的数组。我没有将属性引用添加到item对象,这把我搞砸了。没关系。您正在将po用于整数而不是对象的项目。结果预计为零。使用p代替po->error:no known method'-section';将消息发送强制转换为方法的返回类型错误:1解析ExpressionAdd时出错。NSIndexPath可能没有用于行和节的UITableView便利方法。您使用的是哪种UITableView方法?我在cellforrow委托中得到了相同的结果。@AlexZavatone:我的理解是,与
    p
    vs.
    po
    相比,最终结果并不重要,而是您如何达到目的的本质。p打印局部和全局变量,而po打印ObjC对象的描述
    p
    实际上是一个较低级别的命令,靠近处理器,而
    po
    向对象发送
    -description
    消息。它们都应该起作用。对它的工作原理有有趣的见解。这应该很容易测试。谢谢