在Objective C中,我有一个名为’RootVIEwController.h’的类,它是UItableVIEwController的子类.它实现了SFRestDelegate.它工作正常.
//RootVIEwController.h#import <UIKit/UIKit.h>#import "SFRestAPI.h"@interface RootVIEwController : UItableVIEwController <SFRestDelegate> { NSMutableArray *daTarows; IBOutlet UItableVIEw *tableVIEw; }
我正在尝试创建一个RootVC.swift文件来替换RootVIEwController Objective-c类.
我有一个桥接头文件导入所有在objective-c中导入的头文件
//SwiftForce-BrIDging-header.h #import "SFRestAPI.h"#import "SFRestRequest.h"
我的RooVC.Swift文件如下所示:
import UIKitclass RootVC: UItableVIEwController,SFRestDelegate { ....}
现在,如果我命令单击SFRestDelegate,它将正确进入协议实现.
但是,如果我尝试构建,我得到..“找不到协议声明SFRestDelegate错误!
SWIFT_CLASS("_TtC10SwiftForce6RootVC")@interface RootVC : UItableVIEwController <SFRestDelegate>@property (nonatomic) NSArray * daTarows;- (instancetype)initWithStyle:(UItableVIEwStyle)style OBJC_DESIGNATED_INITIAliZER;- (voID)vIEwDIDLoad;- (voID)dIDReceiveMemoryWarning;- (NSInteger)numberOfSectionsIntableVIEw:(UItableVIEw *)tableVIEw;- (NSInteger)tableVIEw:(UItableVIEw *)tableVIEw numberOfRowsInSection:(NSInteger)section;@end
感谢任何帮助.您可以通过从以下位置下载应用来测试它:
https://github.com/rajaraodv/SwiftForce
您的问题似乎是Swift和Objective-C类和标头的加载顺序的问题.您必须确保在编译Swift代码之前编译Swift类所需的任何头文件.这与使用简单的.h和.m Objective-C文件相当无缝地处理,但是当使用静态库时(如在项目中),.pch文件似乎是导入Swift代码在编译时需要的任何头文件的最合适的位置.时间.
将此行添加到SwiftForce-Prefix.pch文件似乎有效:
#import< SalesforceNativeSDK / SFRestRequest.h>
这看起来并不优雅(就像BrIDging-header解决方案一样)但是只有时间才能证明这是一个错误还是最佳实践.
总结以上是内存溢出为你收集整理的试图在Swift中使用Objective-C编写的委托方法抛出“无法找到协议声明”全部内容,希望文章能够帮你解决试图在Swift中使用Objective-C编写的委托方法抛出“无法找到协议声明”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)