2015-05-02 21 views
0

當有人點擊一個表格視圖單元格時,我想將他們正在點擊的indexPath.row保存到一個整數中,這樣我就可以用另一個方法用這個數字來做事情。我如何保存它?當我這樣做,我得到警告:如何將indexPath.row保存爲全局整數?

.H

@property NSInteger *songIndex; 

.M

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    self.songIndex = indexPath.row; 
    // Warning: Incompatible integer to pointer conversion assigning to 'NSInteger *' (aka 'long *') from 'NSInteger' (aka 'long') 
} 
- (void)otherMethod { 
    PFUser *user = [PFUser currentUser]; 
    [user setObject:[song objectAtIndex:self.songIndex] forKey:@"song"]; 
    // Warning: Incompatible pointer to integer conversion sending 'NSInteger *' (aka 'long *') to parameter of type 'NSUInteger' (aka 'unsigned long') 
} 
+0

我們展示的警告。 –

+0

你不想要一個全局變量。你想要一個實例變量或屬性。 – rmaddy

回答

1

NSInteger的是不是一個類,所以你不能創建對象爲指針,以便只需卸下*從你的聲明。

,你定義的屬性,以便訪問符應爲(非原子,分配)

@property (nonatomic,strong) NSNumber *songIndex; 

希望這將解決您的問題。

UPDATE:

嘗試使用的NSNumber類

[NSNumber numberWithInteger:indexPath.row]; 
+0

這使得songIndex始終= 0。 – smecperson

+1

請在調用didselectrow方法中的值後進行調試和檢查是否在songIndex中進行了值更新? –

+0

它在didSelect和otherMethod中記錄0。 – smecperson

1

songIndex之前取出*。 你也應該設置你的屬性是這樣的:

@property (nonatomic) NSInteger songIndex; 

NSInteger的是基本類型,它返回它的變量,並不需要一個指針。

但是如果你可以使用一個指向基本類型,如布爾值將,花車,整數,等

NSInteger *songIndex; 
[user setObject:[song objectAtIndex:&songIndex] forKey:@"song"]; 
+0

這使得songIndex始終爲0. – smecperson

+0

何時何地調用您的otherMethod?我已經表明你應該工作。一旦你在didSelectRow中設置了它,你應該記錄它的songIndex屬性,如果它在那裏工作,那麼它會在線下的其他地方丟失。 –

+0

它在didSelect中記錄0。 – smecperson

0

在.H

@property INT songIndex;

在.M

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    self.songIndex =(int) indexPath.row; 
} 
- (void)otherMethod { 
    PFUser *user = [PFUser currentUser]; 
    [user setObject:[song objectAtIndex:self.songIndex] forKey:@"song"]; 
} 

OR 在.H

@property NSIndexPath (nonatomic,strong) songIndex; 

在.M

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    self.songIndex = indexPath; 
} 
- (void)otherMethod { 
     PFUser *user = [PFUser currentUser]; 
     [user setObject:[song objectAtIndex:self.songIndex.row] forKey:@"song"]; 
} 
相關問題