objective-c - 这将如何从 Obj-C 转换为 Swift?

标签 objective-c swift ios8 xcode6

我正在尝试用 swift 重写一个目前在 Objective-C 中的应用程序。我如何将这一行更改为 Swift,因为我当前的尝试未证明是正确的

Tabata *tabata = [notification object];

这是整个函数:

- (void)stateChanged:(NSNotification*)notification
{
if (enabled)
{
    Tabata *tabata = [notification object];
    switch (tabata.getState) {
        case EXERCISE:
        case RELAXATION:
            [player play];
            break;

        default:
            break;
    }
}
}

下面是我转换成 Swift 的内容:

func stateChanged(notifcation: NSNotification) {
    if enabled {

        var tabata: Tabata! = notification.object //error "Use of unresolved identifier 'notification'"
        switch tabata.getState() {
        case .EXERCISE: fallthrough
        case .RELAXATION:
            player.play()
            break

        default:
            break

        }
    }
}

最佳答案

在 Swift 中,你必须向下转型 AnyObject 类型的对象,而不是声明类型

   var tabata = notification.object as! Tabata

关于objective-c - 这将如何从 Obj-C 转换为 Swift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31165974/

相关文章:

ios - UIImages 的内存泄漏

swift - 使用 CAGradientLayer 旋转 UIControl 无法正确更新 Swift

swift - 如何快速从网站调用/获取日期和时间

swift - 无法对 deviceToken 进行 urlencode(Swift)

ios - iOS 7 和 iOS 8 中的动态单元格高度 - 我只能在 iOS 7 中支持 heightForRowAtIndexPath 吗?

objective-c - 使用 sortUsingComparator 对 NSInteger 进行排序

objective-c - 在 iOS 程序中比较 char 数组和字符串

objective-c - 我在快速尝试同等的 Objective-C block 时遇到了麻烦

SwiftUi - 无法更改/无法访问背景

ios - UIPickerView - 循环数据