2011-12-28 72 views
1

我有一個函數獲得(ID)返回(ID)基於語言ID的好信息。非常適合字符串,對象(uiButton等),但不適用於INT或CGRect。但下面的例子並不好。 (目標是ONE fonction誰拿什麼,並返回任何東西)Xcode - 將CGRect轉換爲ID?

謝謝你的建議!

[bButton setFrame:(CGRect) [Parametres getByLanguage:CGRectMake(262,51,43,31) FrenchID:CGRectMake(272,51,33,31)]]; 

[bButton setFrame:[Parametres getByLanguage:CGRectMake(262,51,43,31) FrenchID:CGRectMake(272,51,33,31)]]; 

也不行和Xcode。

+ (id) getByLanguage: (id)English FrenchID:(id)French{ 
    P66AppDelegate* appDelegate = [[UIApplication sharedApplication] delegate]; 
    if (appDelegate.nLanguageId == 0) { 
     return French; 
    } 
    else { 
     return English; 
    } 
} 

回答

8

可可提供了一個名爲NSValue一個包裝類,應該幫助你:

NSValue *rectValue = [NSValue valueWithCGRect:rect]; 

CGRect rect = [someNSValue CGRectValue]; 
+0

工作完美! – Franck 2011-12-28 17:15:36

2

這是Objective-C的一個基本限制 - 一個變量有時不能保存一個對象,有時候是一個原始值。最好的解決方法是返回一個NSNumber或NSValue對象來包裝要返回的實際值,但爲了使用rect或int或其他值,必須通過發送它來提取包裝器對象的實際值[theWrapper rectValue]或當量。