How do you print out a UITables indexPath.row in the console window. I dont want to add NSLogs everywhere.
I keep getting 'is not a member' or property.
(lldb) expr (int) printf("%d \n",self.lastChangedIndexPath->_row)
error: 'NSIndexPath' does not have a member named '_row'
(lldb) print self.lastChangedIndexPath->_row
error: 'NSIndexPath' does not have a member named '_row'
(lldb) print self.lastChangedIndexPath->row
error: 'NSIndexPath' does not have a member named 'row'
(lldb) print self.lastChangedIndexPath.row
error: property 'row' not found on object of type 'NSIndexPath *'
(lldb) po self.lastChangedIndexPath.row
error: property 'row' not found on object of type 'NSIndexPath *'
I think because row and section are in a UITableView category:
@interface NSIndexPath (UITableView)
+ (NSIndexPath *)indexPathForRow:(NSInteger)row inSection:(NSInteger)section;
@property(nonatomic,readonly) NSInteger section;
@property(nonatomic,readonly) NSInteger row;
@end
I even created a mini test app and created a clone of NSIndexPath called MyIndexPath and I can access it ok using:
(lldb) print self.indexPath->_row
(NSInteger) $0 = 10
(lldb) print self.indexPath.row
(NSInteger) $1 = 10
(lldb)
TEST app
#import "ViewController.h"
#pragma mark -
#pragma mark CLONE OF NSIndexPath ===================================
#pragma mark -
//------ a clone on NSindexPath with same section and row properties
@interface MyIndexPath : NSObject
@property(nonatomic) NSInteger section;
@property(nonatomic) NSInteger row;
@end
@implementation MyIndexPath
@end
#pragma mark -
#pragma mark MAIN CLASS that has MyIndexPath as iVar =============================
#pragma mark -
@interface ViewController (){
NSString * _iVarString;
int _iVarInt;
}
@property (nonatomic, retain) NSString * propertyString;
@property (nonatomic ) NSInteger propertyInt;
@property (nonatomic, retain) MyIndexPath * indexPath;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//Set iVars
_iVarString = @"hello ivar";
_iVarInt = 34;
//Set properties (and synthesized ivars _propertyString and _propertyInt)
self.propertyString = @"my propertyString";
self.propertyInt = 46;
//Local vars
NSString * localString_ = @"hello";
int localInt_ = 10;
//------
self.indexPath = [[MyIndexPath alloc]init];
self.indexPath.section = 10;
self.indexPath.row = 10;
NSLog(@"PUT BREAKPOINT HERE");
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
And I can access it fine - just not in a UITableView category.
(lldb) print self.indexPath->_row
(NSInteger) $0 = 10
(lldb) print self.indexPath.row
(NSInteger) $1 = 10
(lldb)
If lldb does not know about a property then you can always use the accessor function:
print (NSInteger) [self.lastChangedIndexPath row]