我正在尝试为按钮分配标签。正常命令是:
button.tag = 1;
标签必须是整数。
我的问题是我想分配一个存储在数组中的整数(tabReference),它又是类(currentNoteBook)的一部分。所以我需要这个:
int k = 0;
button.tag = [currentNoteBook.tabReference objectAtIndex:k]; // This is where I get the warning.
然而,这似乎不起作用,因为xCode告诉我:传递setTag的参数1:从没有强制转换的指针生成整数。
我的数组看起来像这样(我试图使用整数......):
NSMutableArray *trArray = [[NSMutableArray alloc] init];
NSNumber *anumber = [NSNumber numberWithInteger:1];
[trArray addObject: anumber];
[trArray addObject: anumber];
[trArray addObject: anumber];
[trArray addObject: anumber];
currentNoteBook.tabReference = trArray;
答案 0 :(得分:1)
NSMutableArray存储可修改的对象数组。您不能直接在NSMutableArray中存储整数。这就是为什么你必须做这样的事情来存储一堆整数:
NSMutableArray *the_array = [[NSMutableArray alloc] init];
int max = 100;
for (int i = 0; i < max; i++)
{
NSNumber *temp_number = [NSNumber numberWithInt:arc4random() % max];
[the_array addObject:temp_number];
}
当然,你可以做同样的事情并在那里存储其他东西:
NSMutableArray *the_array = [[NSMutableArray alloc] init];
int max = 100;
int max_x = 50;
int max_y = 25;
int max_w = 100;
int max_h = 200;
for (int i = 0; i < max; i++)
{
CGFloat temp_x = arc4random() % max_x;
CGFloat temp_y = arc4random() % max_y;
CGFloat temp_w = arc4random() % max_w;
CGFloat temp_h = arc4random() % max_h;
CGRect temp_rect = CGRectMake(temp_x, temp_y, temp_w, temp_h);
[the_array addObject:[NSValue valueWithCGRect:temp_rect]];
}
当你去检索这些值时,你需要指定你想从数组中得到什么,因为同一个数组可以包含非常不同的对象。
对于你的整数:
for (int i = 0; i < max; i++)
{
NSLog(@"%i: %i", i, [[the_array objectAtIndex:i] intValue]);
}
对于CGRect示例:
for (int i = 0; i < max; i++)
{
CGRect temp_rect = [[the_array objectAtIndex:i] CGRectValue];
NSLog(@"%i: x:%f y:%f w:%f h:%f", i, temp_rect.origin.x, temp_rect.origin.y, temp_rect.size.width, temp_rect.size.height);
}
简而言之,您在代码中存储的对象不是整数。你必须将它们作为对象拉出来,然后提取你的整数以获得你的数据。
答案 1 :(得分:0)
刚刚在我提出的另一个问题中找到答案:
必须是:
btn.tag = [[currentNoteBook.tabReference objectAtIndex:k] intValue];