簡體   English   中英

如何將indexPath.row保存為全局整數?

[英]How do I save indexPath.row as global integer?

當某人輕按表格視圖單元格時,我想將他們輕按的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')
}

刪除songIndex之前的*。 您還應該像這樣設置屬性:

@property (nonatomic) NSInteger songIndex;

NSInteger是一種原始類型,它返回其變量並且不需要指針。

但是,如果可以使用指向基本類型的指針,例如BOOL,Float,Integer等。

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

NSInteger不是類,因此您不能將對象創建為指針,因此只需從聲明中刪除*。

並且您將其定義為屬性,因此訪問說明符應為(nonatomic,assign)

@property (nonatomic,strong) NSNumber *songIndex;

希望這能解決您的問題。

更新:

嘗試使用NSNumber類

[NSNumber numberWithInteger:indexPath.row];

在.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"]; 
 }

在.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"]; 
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM