【问题标题】:Swift: Syntax TranslationSwift:语法翻译
【发布时间】:2015-01-05 20:18:04
【问题描述】:

在将以下代码翻译成 Swift 时需要帮助。

Objective-C 代码(效果很好):

- (UIViewController *)getViewControllerFromStoryboard:(NSString *)storyboardName sceneName:(NSString*)sceneName iconName:(NSString*)icon title:(NSString*)title
{
    UIStoryboard *sb = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
    UIViewController *vc = [sb instantiateViewControllerWithIdentifier:sceneName];
    UIImage *tabIcon = [UIImage imageNamed:icon];

    vc.tabBarItem = [[UITabBarItem alloc] initWithTitle:title image:tabIcon selectedImage:nil];
    vc.title = NSLocalizedString(title,nil);

    return vc;
}

翻译成 Swift:

func getViewControllerFromStoryBoar(storyboardName: String, sceneName: String, iconName: String, title: String) -> UIViewController{
    let sb : UIStoryboard = UIStoryboard(name: storyboardName, bundle: nil)
    let vc = sb.instantiateViewControllerWithIdentifier(sceneName)  //Warning A
    let tabIcon : UIImage = UIImage(named: iconName)!
    vc.tabBarItem = UITabBarItem(initWithTitle:title, image:tabIcon) //Error A
    vc.title = title //Error B

    return vc as UIViewController

}

警告 A: 常量“vc”被推断为“AnyObject!”类型,这可能是意料之外的 为什么是“任何对象!” ?这似乎修复了错误

错误 A:无法分配给 'vc' 中的 'tabBarItem'

错误 B:无法分配给“vc”中的“title”

上面的两个错误我没看懂。

【问题讨论】:

    标签: swift xcode6 xcode6.1


    【解决方案1】:

    错误 A:无法分配给 'vc' 中的 'tabBarItem'

    错误 B:无法分配给 'vc' 中的 'title'

    因为instantiateViewControllerWithIdentifier 返回一个 AnyObject。这就是警告警告你的内容!你应该注意那个警告。 (您将警告静音;这是错误的做法。不要静音;。)

    在使用它之前,您需要先取消此引用。我知道知道它是一个 UIViewController,但 Swift 不知道这一点;你必须投射并告诉它。

    let vc = sb.instantiateViewControllerWithIdentifier(sceneName) as UIViewController
    

    这将一次性解决所有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      相关资源
      最近更新 更多