我正面临错误“多个方法名为'tag',发现结果,参数类型或属性不匹配”,因为尝试更新64位的旧代码,代码是;
- (IBAction)undoClick:(id)sender
{
[(AppDelegate *)[[UIApplication sharedApplication] delegate] playSoundEffect:0];
for(UIView *view in [self.bigView subviews])
{
if(view.tag == lastTag)
[view removeFromSuperview];
}
if([[extraList lastObject] tag] == lastTag) // Here is error
[extraList removeLastObject];
if(lastTag > 1)
lastTag--;
}
有问题的行被标记,但这里也是FYI
if([[extraList lastObject] tag] == lastTag)
答案 0 :(得分:2)
我猜extraList
是常规NSArray
,然后lastObject
的类型为id
。如果您的extraList
仅包含UIView
的实例,请尝试将extraList
的声明从NSArray *extraList
更改为NSArray<UIView *> *extraList
,这可以解决您的问题。
这是现代化的Objective-C API的一部分,它允许泛型(范围有限,但仍然)。
答案 1 :(得分:0)
我想lastTag是你的整数值比较
if( [extraList lastObject]integerValue] == lastTag)
{
// logic here
}
如果最后一个标签是String而不是简单使用
if( [[extraList lastObject]isEqualToString: lastTag])
{
// logic here
}