Xcode“Expected identifier”的英文翻译错误?

时间:2013-09-23 18:47:54

标签: ios objective-c

代码行:

CGRect *bounding = [[NSAttributedString *initWithString:text]
    boundingRectWithSize:size
                 options:[[NSDictionary alloc]
        initWithObjectsAndKeys:kCTFontAttributeName, @"Scurlock 20", nil]
];
当我尝试编译时,

收到“预期标识符”的错误。之前它没有“选项:”但是添加它并没有改变它。

我正在尝试获取名为text的NSString变量的边界,并且想知道什么是错的(可能是因为我修改了语法)。

大小等于CGSizeZero。

如何更正这行代码,以便说出我想要的内容?

- 编辑 -

我在这段代码中遇到了同样的错误:

-(float)getLength:(NSString *)text
{
    UIFont *font = [UIFont fontWithName:@"Scurlock" size:20];
    CGSize size = CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX);
    CGRect *bounding = [[NSAttributedString
            *initWithString:text] boundingRectWithSize:size
        options:[[NSDictionary alloc] initWithObjectsAndKeys:
            kCTFontAttributeName, @"Scurlock 20", nil]];
    return bounding->size.width;
}

我使用CGFloatZero可能会导致运行时崩溃和崩溃,但我希望其他原因可能是语法错误的原因。

我是否遗漏了我应该放入CGRect行的标识符?

谢谢,

2 个答案:

答案 0 :(得分:3)

我认为问题是initWithString:方法之前的星号。

[NSAttributedString *initWithString:text]

除非我遗漏了某些东西,否则星号不应该存在。

希望这有帮助!

答案 1 :(得分:1)

需要将

size设置为字符串允许的最大大小。

例如,如果您想知道字符串的最大宽度为320,您可以这样做:

CGRect *bounding = [[NSAttributedString *initWithString:text]
    boundingRectWithSize:CGSizeMake(320.0f, CGFLOAT_MAX)
                 options:@{ kCTFontAttributeName : @"Scurlock 20" }];

如果您不关心字符串的宽度,请使用CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)