找到了多个名为“tag”的方法,其中包含不匹配的结果,参数类型或属性

时间:2017-04-27 12:15:54

标签: ios objective-c

我正面临错误“多个方法名为'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)

2 个答案:

答案 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
 }