Xcode 6.1:发现多个名为“count”的方法,结果、参数类型或属性不匹配

Posted

技术标签:

【中文标题】Xcode 6.1:发现多个名为“count”的方法,结果、参数类型或属性不匹配【英文标题】:Xcode 6.1 : Multiple methods named 'count' found with mismatched result, parameter type or attributes 【发布时间】:2015-02-28 15:16:37 【问题描述】:

我收到在构建应用程序时发现多个名为“count”的方法结果不匹配、参数类型或属性错误。该应用程序在 32 位下运行良好。根据Apple guideline,我已将其更改为 64 位。我已经提到了这个Link,但没有得到任何帮助。

我已经在模拟器上的多台设备上测试了应用程序。 在 32 位上可以正常工作,但在 64 位上会提示错误。 为什么会这样?

 -(void)serviceSuccessFulForPatientSelect:(id)response

    [self hideOverlay];
    if([response isKindOfClass:[NSArray class]])
    
        if([response count]>0)
        
            if(1)
            
               ...
            
        
    
    [refillDetailTable reloadData];


【问题讨论】:

在调用“count”之前尝试将响应投射到 NSArray。 【参考方案1】:

仔细检查您的回复,是否有任何名称为 count

的属性

【讨论】:

如果有什么问题?【参考方案2】:

解决方案 1: 我已经声明了 count as property in a view controller。我将它重命名为 CountValue,问题就解决了。

解决方案 2: 您可以类型转换为适当的数据类型。

if([(NSArray *) response count]>0) 
  ...

这个解决方案对我来说是不可行的,因为有 1000 个位置包含 [response count]

【讨论】:

【参考方案3】:
if([response count]>0)

response 在这里是一个id,错误表明有多个称为count 的方法返回不同的类型——intNSInteger 我认为在 64 位中是不同的,但在 32 位中是相同的。

要修复,请执行强制转换:

if([(NSArray*)response count]>0)

【讨论】:

铸造不可行,因为大约有 1000 多个地方需要更改...任何其他修复 数千个地方?您的替代方法是找到其他计数方法(大概在您的代码中)并更改返回类型。但是,如果您有数以千计的 id 对象,那听起来是错误的。

以上是关于Xcode 6.1:发现多个名为“count”的方法,结果、参数类型或属性不匹配的主要内容,如果未能解决你的问题,请参考以下文章

未生成适用于 iOS 的 Xcode 6.1 静态库 .a

在 Mac OS X Yosemite 上下载 XCode 6.1 时遇到问题

带有 Instruments 6.1 的 Xcode 6.1 无法正常工作

Xcode 6.0/6.1 并使用客户端的配置文件进行构建

XCode 6.1 UIImageView 消失

在 Xcode 6.1 上构建应用程序时出错?