52

I need to convert a nsindexpath var into NsInteger or simply an int. e.g:

 int rowIndex = [mGoogleBaseTable selectedRow];
 //mGoogleBaseTable is a NSTable type in Macdevelopement..

&&

int rowIndex = [mGoogleBaseTable indexPathForSelectedRow];
//mGoogleBaseTable is a UITableView type in Iphone (iOS)Development.

selectedRow returns NSInteger simply but indexPathForSelectedRow returns a NSIndexPath..

Please help me how can i achieve this.

6 Answers 6

132

If

NSIndexPath *p = ... // some indexpath

then

NSInteger row = p.row;
NSInteger section = p.section;

That's all!

2
  • thank you.. complete work is p.row but i no understand p.section.
    – AnilPatel
    Commented Apr 18, 2013 at 11:01
  • @AnilMetatagg the section is only relevant if you have more than one section.
    – mvds
    Commented Apr 22, 2013 at 7:37
14

Maybe, this is can help you

NSInteger variable = indexPath.row;
1
  • also can used like yourTextField.tag = indexPath.row to track and create conditions inside your your custom cells, say if you want to update data inside a mutable array..
    – whyoz
    Commented Oct 3, 2013 at 0:53
8

In Swift:

    let section: Int = indexPath.section
    let row: Int = indexPath.row
7

I prefer doing it this way

NSNumber *selRow = [[NSNumber alloc] initWithInteger:indexPath.row];
1
  • 2
    In that case better use NSNumber *selrow = @(indexPath.row); for readability
    – mvds
    Commented May 20, 2013 at 13:43
1

Simply convert into int by,

NSIndexPath *path = ... // some indexpath

int row = (int)path.row;

-1

In swift :

  1. Associate your collection view to your var :

    @IBOutlet weak var collectionView: UICollectionView!

  2. In prepareForSegue func, you can call :

    var indexPath = collectionView.indexPathsForSelectedItems()

Not the answer you're looking for? Browse other questions tagged or ask your own question.