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

时间:2013-09-30 13:07:51

标签: iphone ios7 xcode5

此代码在X-Code 4.6中有效,但在X-Code 5中失败:

NSMutableArray *a = [[NSMutableArray alloc] initWithCapacity:4];

for (int k=0; k<4; k++) {
    int e = arc4random_uniform(3)+1;

    if (arc4random_uniform(2)>0) {
        e *= -1;
    }

    [a addObject:[NSNumber numberWithInt:e]];
}

if (i>0) {
    int l = [arrayPieces count]-pieceNumber;
    int e = [[[[arrayPieces objectAtIndex:l] edges] objectAtIndex:1] intValue]; //CAUSES ERROR
    [a replaceObjectAtIndex:3 withObject:[NSNumber numberWithInt:-e]];
}

if (j>0) {
    int e = [[[[arrayPieces lastObject] edges] objectAtIndex:2] intValue];//CAUSES ERROR
    [a replaceObjectAtIndex:0 withObject:[NSNumber numberWithInt:-e]];
}

我还得到与相同代码相关的以下错误:

错误的接收器类型'UIRectEdge'(又名'enum UIRectEdge')

...但我的项目中没有提及'UIRectEdge'。

我已经搜索过类似这些错误的案例,但似乎没有什么能够解决我能够尝试的问题。

非常感谢任何帮助。

谢谢。

3 个答案:

答案 0 :(得分:1)

'edges'属性返回UIRectEdge。如果你在'arrayPieces'中有一个自定义类,它有自己的getter,称为'edges',请尝试像这样强制转换对象:

int e = [[[((MYCUSTOMOBJECT*)[arrayPieces objectAtIndex:l]) edges] objectAtIndex:1] intValue]; //CAUSES ERROR

答案 1 :(得分:1)

似乎与此Bad receiver type UIRectEdge and Multiple methods named

中的问题相同

我猜您的项目最初来自https://github.com/AndreaBarbon/Puzzle-iOS

我在Xcode 5.0.2中运行它所做的就是在整个项目中搜索“edge”并用“my_edges”(不带引号)替换每个实例,然后就可以了。

问题是在Xcode5 / iOS7中将“edge”添加到了uikit,这就是你得到错误的原因。

答案 2 :(得分:0)

使用以下内容将作业替换为e

int e = [[[((PieceView *)[arrayPieces objectAtIndex:l]) edges] objectAtIndex:1] intValue];