1

此代码在 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”(又名“枚举 UIRectEdge”)

...但我的项目中没有提到“UIRectEdge”。

我已经搜索了这些错误的类似案例,但似乎没有足够接近来解决我能够尝试的问题。

任何帮助将非常感激。

谢谢你。

4

3 回答 3

1

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

int e = [[[((MYCUSTOMOBJECT*)[arrayPieces objectAtIndex:l]) edges] objectAtIndex:1] intValue]; //CAUSES ERROR
于 2013-10-02T21:37:09.493 回答
1

似乎与此不良接收器类型 UIRectEdge 和多个名为的方法中的问题相同

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

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

问题是 Xcode5/iOS7 中的 uikit 中添加了“edges”,这就是您收到错误的原因。

于 2014-02-06T20:16:22.030 回答
0

将分配替换为e以下内容:

int e = [[[((PieceView *)[arrayPieces objectAtIndex:l]) edges] objectAtIndex:1] intValue];
于 2015-06-10T07:27:43.983 回答