此代码在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'。
我已经搜索过类似这些错误的案例,但似乎没有什么能够解决我能够尝试的问题。
非常感谢任何帮助。
谢谢。
答案 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];