Ios NSIndexPath无法将项、节或行识别为属性
当iOS 7.1发送my viewController时: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
- (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
消息。它们都应该起作用。对它的工作原理有有趣的见解。这应该很容易测试。谢谢