为什么我的Objective C模块在Xcode 8中看不到我的Swift 3类?

欧文·戈弗雷(Owen Godfrey)

我已经为此苦苦挣扎了几个月了。我找到了很多答案,但到目前为止,没有一个对我有用。

我有一个已经运行了几年的iOS应用程序。它最初是用目标C编写的,然后我添加了一些Swift代码来利用该语言的功能。当我将项目转换为Xcode 8和Swift 3时,它创建了500多个错误,我不得不慢慢清除掉。最终,我只归结为一类错误。Swift类对目标C模块不可见。

现在…我已经用@objc声明了,甚至还确保将这些类声明为public,以防万一。无论如何,这些事情都应该很重要,因为swift类是从NSObject派生的。

这是一个简化的示例;

@interface PDAppDelegate ()

@property (strong, nonatomic, readwrite) PDGameManager *gameManager;

@end


@implementation PDAppDelegate {
    NSString * stoppedMusicKey;
}

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [PDAward resetTutorial];
    return YES;
}

import Foundation
import CoreData

@objc class PDAward: NSManagedObject {

    @NSManaged var awardValue: Int16

    enum AwardType: Int16 {
        case Start = 0, Spin = 1, Water = 2, Treats = 3, Food = 4, Album = 5, Facebook = 101, Ball = 102, Name = 103, Gesture = 201, Weekly = 301, Stop = -1
    }

    var award: AwardType {
        get {
            return AwardType(rawValue: awardValue)!
        }
        set {
            awardValue = newValue.rawValue
        }
    }

    @objc class func resetTutorial() {
        // reset stuff
    }
}

当然,这已大大减少了,但是我希望我已经抓住了问题的所有要素。

让我强调一下,我之前曾使用过此代码。为什么现在不起作用?

马特

我希望我已经抓住了问题的所有要素

你还没有 最重要的是您已省略的事情:Objective-C代码必须导入Swift头文件:

#import "MyModuleName-Swift.h"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我在Python中看不到我的mp3文件?

为什么模块在引擎代码中看不到类?

为什么在C#中看不到Ping类?

为什么我在终端中运行它时,在 VS Code 中看不到我用 C# 编写的程序的输出

Matlab在jar包中看不到我的某些Java类(不是全部)

为什么在cloudboost中看不到我的表?

为什么我在左侧边栏中的xcode中看不到工作区中的所有文件?

为什么我在 Delegate 类中看不到 BeginInvoke 和 EndInvoke 方法的存在?

为什么我在 Intellisense 中看不到我的 <example> 和 <code>?使用 C# 和 Visual Studio 2017-2019

为什么我在全局节点模块列表中看不到 Node 和 Yarn?

为什么我的C ++代码看不到这个C#类成员?

C#:为什么我看不到我的Class(动态创建)属性

在我的Joomla 3中看不到验证码

为什么Wine看不到我已经安装了mono 3?

flutter ios:xcode 看不到我的 podfile

为什么我在我的表中看不到我的 JSON 数据?

我在 flutter swiper 中看不到我的照片

为什么我在 Fabric 中看不到我的 android 应用程序图标?

为什么我在Chrome中看不到我的HTTP标头?

为什么我在Docker容器中看不到我的文件?

为什么我在本地存储中看不到我上次点击的值?

为什么我在RAM中看不到我的文件?

为什么xcode看不到我的app-bridge-header并告诉我未声明文件GIDSignInDelegate?

在phpmyadmin中看不到我的mySql项目

emacs在gentoo中看不到我的字体

在iTunes中看不到我的版本

在MessageDialog中看不到我的结果

为什么在VM中看不到我的内部网络?

为什么Sass在Express应用程序中看不到我的.scss文件?