Tôi đang cố gắng để xác định những gì một giá trị trong một mảng và sau đó thực hiện thay đổi nào trên mảng, nhưng tôi không thể truy cập vào mảng ở nơi đầu tiên ...Chuyển đổi NSNumber để NSInteger
NSNumber *row = [NSNumber numberWithInt:recognizer.view.tag];
NSInteger *newRow = [row integerValue];
NSInteger *index = [selectedItems indexOfObject:row];//0=Not selected 1=selected;
NSLog(@"%@ & ",row);
if (index == 0) {
[selectedItems removeObjectAtIndex:newRow];
[selectedItems insertObject:@"1" atIndex: newRow];
[(UITableViewCell *)(recognizer.view) setAccessoryType:UITableViewCellAccessoryCheckmark];
} else {
[selectedItems removeObjectAtIndex: newRow];
[selectedItems insertObject:@"0" atIndex: newRow];;
[(UITableViewCell *)(recognizer.view) setAccessoryType:UITableViewCellAccessoryNone];
}
Như bạn có thể thấy tôi đang cố gắng lấy thông tin từ biến hàng, đó là một NSNumber và tìm giá trị của mảng với biến chỉ mục. Ngoài ra tôi tuyên bố này trong onload của tôi() ...
selectedItems = [NSArray arrayWithObjects: 0, 0, 0, nil];
Vấn đề là tôi nhận được tất cả những cảnh báo này nói ...
Incompatible integer to pointer conversion initializing 'NSInteger *' (aka 'int *') with an expression of type 'NSUInteger' (aka 'unsigned int');
Bất cứ khi nào tôi sử dụng hàng varaibles hoặc newRow. Như bạn có thể thấy newRow chỉ là hàng như một số nguyên. Tôi đang làm gì sai?
+1. Chỉ muốn thêm rằng mặc dù NSInteger chỉ là một typedef cho int, nó hữu ích hơn chỉ là một int bởi vì nó sẽ chứa các kiến trúc 32 bit/64-bit riêng của nó. – jmstone617
Nếu tôi xóa con trỏ cho newRow và chỉ mục, tôi sẽ không nhận được cảnh báo, nhưng khi tôi chạy ứng dụng của mình, tôi gặp lỗi khi chạy mã này ... NSLog (@ "% @ &% @", newRow, index); Lỗi này là EXC_BAD_ACCESS –
Tốt hơn để nghĩ về nó như là một typedef cho 'long' (ngay cả khi nó không phải là.) Kích thước của nó khác nhau tùy thuộc vào kiến trúc mục tiêu. –