Xcode - 将CGRect转换为ID?

时间:2011-12-28 16:55:28

标签: objective-c xcode ios5

我有一个函数,它根据languageID获取(ID)返回(ID)的好信息。适用于字符串,对象(uiButton等),但不适用于INT或CGRect。但下面的例子并不好。 (目标是一个人拿东西并返回任何东西的功能)

感谢您的建议!

[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;
    }
}

2 个答案:

答案 0 :(得分:8)

Cocoa提供了一个名为NSValue的包装类,它可以帮助你:

 NSValue *rectValue = [NSValue valueWithCGRect:rect];

 CGRect rect = [someNSValue CGRectValue];

答案 1 :(得分:2)

这是Objective-C的一个基本限制 - 变量有时不能保存对象,有时也不能保持原始值。最好的解决方法是返回一个包含要返回的实际值的NSNumber或NSValue对象,但是为了使用rect或int或其他任何东西,你必须通过发送它来从包装器对象中提取实际值{{ 1}}或同等的。