2013-09-23 45 views
1

的代碼行:當我試圖編譯它Xcode「Expected identifier」錯誤的英文翻譯?

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

越來越「預期標識符」的錯誤。此前它沒有「選項」,但補充說並沒有改變它。我試圖獲得名爲文本的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行中的標識符?

感謝,

+0

如果你點擊側邊欄中的錯誤,它會告訴你到底發生了什麼問題 - LLVM over GCC的改進之一就是錯誤報告的準確性不僅僅在線上。在Xcode中,您應該在指示位置的線下方看到一個小插入符號。你在哪裏看到插文? – Tommy

+0

我轉向了另一種方法;我會很感激,如果你可以看看http://stackoverflow.com/questions/18963566/how-should-i-be-sending-a-message-with-a-field-of-the-same-object-as價值。我正在採取不同的方法,並且還沒有確定爲什麼我嘗試在對象的實現中創建和訪問方法變量的操作是關閉語法的。 – 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