2013-09-23 4 views
1

Строка коды:Английский перевод ошибки Xcode "Ожидаемый идентификатор"?

CGRect *bounding = [[NSAttributedString *initWithString:text] 
    boundingRectWithSize:size 
       options:[[NSDictionary alloc] 
     initWithObjectsAndKeys:kCTFontAttributeName, @"Scurlock 20", nil] 
]; 

получает ошибку «ожидаемого идентификатора», когда я пытаюсь скомпилировать его. Раньше у него не было «вариантов:», но добавив, что в него не изменилось.

Я пытаюсь получить ограничение для переменной NSString с именем text и хотел бы знать, что не так (по-видимому, я исказил синтаксис).

размер равен CGSizeZero.

Как исправить эту строку кода, чтобы она говорила, что я хочу?

--EDIT--

Я получаю ту же ошибку с этим кодом:

-(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?

Спасибо,

+0

Если вы нажмете на ошибку на боковой панели, она точно покажет вам, где именно в строке, в которой находилась проблема - одно из улучшений с LLVM над GCC заключается в том, что ошибки сообщаются более точно, чем просто в строке. В Xcode вы должны увидеть небольшую каретку ниже строки, указывающей позицию. Где вы видите карманов? – Tommy

+0

Я перешел к другому подходу; Я был бы признателен, если бы вы могли посмотреть http://stackoverflow.com/questions/18963566/how-should-i-be-sending-a-message-with-a-field-of-the-same-object-as -its-value. Я придерживаюсь другого подхода и еще не приписал, почему моя попытка создать и получить доступ к переменной метода изнутри реализации объекта является несинтетическим. – JonathanHayward

+0

@JonathanHayward, посмотрев на этот вопрос и на другой, который вы упомянули в своем комментарии (для которого я также предоставил ответ), я бы сказал, что вы не очень хорошо знакомы с синтаксисом Objective-C. Даже если вы перейдете к другому подходу, я верю, что ответ, который я дал для этого вопроса, является правильным. Теперь, касаясь вашей попытки «создать и получить доступ к переменной метода изнутри реализации объекта», я хотел бы упомянуть, что в Objective-C невозможно получить доступ к переменным метода из-за пределов метода. – LuisCien

ответ

1

size должен быть установлен на максимально допустимый размер для строки.

Например, если вы хотите знать, как высокая струна будет с максимальной шириной 320, вы могли бы сделать:

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

Если вы не заботитесь, насколько широко может быть строкой, используйте CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)

3

Я считаю, что проблема связана с звездочкой перед методом initWithString:.

[NSAttributedString *initWithString:text] 

Если мне не хватает чего-то, то звездочки не должно быть.

Надеюсь, это поможет!

+2

Учитывая, что он сделал то же самое в коде, добавленном редактированием, и получает ту же ошибку, это было бы убедительно даже без знания синтаксиса Objective-C. – Tommy

Смежные вопросы