在Objective-C中使用Swift类

DHShah01

file not found尝试执行时出现错误#import "DodgeHeroReal-Swift.h我的产品模块名称设置为,DodgeHeroReal并且定义模块的设置也设置为YES(两个构建设置都在目标级别和项目级别)。我已经有一个由Xcode生成的桥接头。我有一个快速的类emojisClass,希望在我的Objective-C ViewController EmojiShopViewController中使用。

我看了很多关于混合objc和swift项目的精彩StackOverflow帖子,但是提出的所有解决方案似乎都没有用。我也查看了Apple文档页面,但这也无济于事。有人可以指导我如何在ViewController.m中使用以下swift类吗?

这是GlobalFunc.swift(具有的类emojisClass

@objc(EmojiClass) class emojisClass {
    @objc(buyAngle) func buyAngle(){
        if(emotiBucks >= 10000){
             var value = emotiBucks-10000
             NSUserDefaults.standardUserDefaults().setBool(true, forKey: "haveAngleEmoji")
            NSUserDefaults.standardUserDefaults().setInteger(value, forKey: "emotiBucks")
            NSUserDefaults.standardUserDefaults().synchronize()
        }
    }
    func buyAlien(){
        if(emotiBucks >= 2000){
            var value = emotiBucks-2000
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "haveAlienEmoji")
            NSUserDefaults.standardUserDefaults().setInteger(value, forKey: "emotiBucks")
            NSUserDefaults.standardUserDefaults().synchronize()
        }
    }
    func buySassy(){
        if(emotiBucks >= 5000){
            var value = emotiBucks-5000
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "haveSassyEmoji")
            NSUserDefaults.standardUserDefaults().setInteger(value, forKey: "emotiBucks")
            NSUserDefaults.standardUserDefaults().synchronize()
        }
    }
    func buyHeart(){
        if(emotiBucks >= 3000){
            var value = emotiBucks-3000
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "haveHeartEmoji")
            NSUserDefaults.standardUserDefaults().setInteger(value, forKey: "emotiBucks")
            NSUserDefaults.standardUserDefaults().synchronize()
        }
    }   
}

我已经将桥接标头导入了我的EmojiShopviewController.m:中#import "Dodge Hero-Bridging-Header.h"现在,我希望能够调用在我的swift文件中声明的功能buyAngle()。

编辑:该项目最初是一个快速项目,然后我添加了Obj-C文件,然后添加了Bridging-Header。因此,该项目包含.swift和objc文件,现在我希望能够在ProductModule-Swift.h不删除任何当前文件情况下生成

编辑2:运行find * -iname '*Swift.h',然后在我的DerivedData目录中的Terminal中的CMD + F返回:

****** Other stuff ********
DodgeHeroReal-gmmvxsfrydixythkdwqjpncbqlpl/Build/Intermediates/DodgeHeroReal.build/Debug-iphonesimulator/DodgeHeroRealTests.build/DerivedSources/DodgeHeroReal-Swift.h
DodgeHeroReal-gmmvxsfrydixythkdwqjpncbqlpl/Build/Intermediates/DodgeHeroReal.build/Debug-iphonesimulator/DodgeHeroRealTests.build/DerivedSources/DodgeHeroRealTests-Swift.h
DodgeHeroReal-gmmvxsfrydixythkdwqjpncbqlpl/Build/Intermediates/DodgeHeroReal.build/Debug-iphonesimulator/DodgeHeroRealTests.build/Objects-normal/x86_64/DodgeHeroReal-Swift.h
****** More other stuff ********
罗伯特·L

我发现有时swift文件中的错误使ProjectName-Swift.h文件无法生成,并且没有警告。尝试使所有swift文件都没有错误,即使您必须暂时伪造它,例如,通过注释掉某些内容或添加可以正确编译的伪代码也可以。另外,请确保您从Objective-C引用的swift类继承自NSObject或其他一些Objective-C类,并确保它们未全部标记为私有。我浪费了几天时间试图弄清楚为什么会发生此错误-这真的很令人沮丧!

请注意,您可以在import语句中命令单击Swift-> Objective-C桥接文件的文件名,Xcode将向您显示其内容。如果发出错误蜂鸣声,则显然意味着未找到该文件,因此可能未生成该文件。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在objective c 类中使用delegate 调用swift 方法

在Objective-C中使用通用Swift类

在Objective-C中使用Swift对象类

使用Objective-C的Swift类使用Swift的类

在Objective-C中使用Swift协议

如何在框架的Objective-C文件中使用Swift类?

无法在Objective-C单元测试中使用Swift类

在Objective c中使用Swift类。发生未声明的标识符错误

如何在框架中使用Swift扩展Objective-C类?

我可以在Swift框架库中使用Objective-C类吗?

如何在 Objective-C 代码中使用导入的 Swift 协议和类?

如何在Swift中使用名称为Objective-C的类作为关键字

使用来自Objective C类的参数调用Swift函数

在Objective-C类中使用时,看不到调试区域中的Swift对象层次结构

在Objective-C中使用时,有时不会调用Swift类中声明的运算符重载“ <”

类消息的接收者“**”是前向声明错误。在 Objective-C 中使用 Swift 静态库

如何在 Objective-C 中使用 swift 协议实现?

如何在Swift中使用Objective-C枚举

在Objective-C框架中使用Swift闭包

如何在Objective-C中使用Swift结构

在Objective-C中使用Swift扩展方法

在Objective-C代码中使用Swift的缺点?

是否可以在 Objective-c 中使用 YouTubePlayer-Swift?

在Xcode Swift项目中使用Objective C框架

Objective-C类中的Swift协议

Swift 中的 Objective C 类方法调用

Swift-Objective-C加载类方法?

从Objective C中的Swift类继承

从Objective-C类调用Swift函数