[英]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.