IU在Java方面经验丰富,但对Objective C来说是新手,所以这可能非常愚蠢。尽管如此,我一直在努力,寻找我从以下代码中得到预期表达式错误的原因。
CGAffineTransform move = CGAffineTransformMakeTranslation(middleX, middleY);
[shapePath applyTransform:move];
[shapePath stroke];
[shapePath fill];
shapePath是一个UIBezierPath,middleX和middleY是CFFloats。
错误是一个“解析问题”,它只是在上面第一行说“预期表达”
答案 0 :(得分:1)
使用在switch
语句中使用的额外上下文,我知道出了什么问题。
如果不将大小写括在大括号中,则无法在switch语句中声明变量。你可以在this answer中了解它的原因(简而言之,它们不会引入新的范围)。
例如,创建这样的变量会给出您面临的编译器错误:
但如果在案例周围添加大括号(如下所示),则可以在该范围内创建变量
您在该问题中显示的代码没有问题。以下代码适用于我,没有任何编译器错误:
UIBezierPath *shapePath = [UIBezierPath bezierPath];
CGFloat middleX = 10.0;
CGFloat middleY = 10.0;
CGAffineTransform move = CGAffineTransformMakeTranslation(middleX, middleY);
[shapePath applyTransform:move];
[shapePath stroke];
[shapePath fill];
您应该在上面提到的问题中查找其他语法错误。
例如,作为suggested in this answer,您可能在代码中的其他位置缺少结束括号(}
)。
答案 1 :(得分:0)
此代码位于switch子句中。当我在它之外宣布移动变量时,它就消失了。不知道为什么。现在它有效。