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

如何在框架中使用Swift扩展Objective-C类?,objective-c,frameworks,swift2,Objective C,Frameworks,Swift2,我有一个(OSX)Objective-C框架,我想添加一些Swift扩展,我正在使用Xcode 7ß6来处理这个框架。框架中有一个类(我们称之为“Sample”)在文件“Sample.h”和“Sample.m”中实现。。“Sample.h”包含: #import <Foundation/Foundation.h> @interface Sample : NSObject @property int x; @end #import "Sample.h" @impleme

我有一个(OSX)Objective-C框架,我想添加一些Swift扩展,我正在使用Xcode 7ß6来处理这个框架。框架中有一个类(我们称之为“Sample”)在文件“Sample.h”和“Sample.m”中实现。。“Sample.h”包含:

#import <Foundation/Foundation.h>
@interface Sample : NSObject
@property   int     x;
@end
#import "Sample.h"

@implementation Sample
- (instancetype) init {
    if ((self = [super init]) == nil) return nil;
    self.x = 99;
    return self;
}
@end
我在框架中添加了“Sample.swift”,其中包含:

import Foundation

extension Sample {
    func PrettyPrint () {    
        print("\(x)")
    }
}
这显然是我想在更大的上下文中做的一个简单版本,这里我想使用Swift文件通过添加一个“PrettyPrint”函数来扩展“Sample”

。。框架构建没有错误,但是框架函数“PrettyPrint”对调用应用程序不可见。将应用程序代码调用到框架中,如:

import Foundation
import TestKit

let  sample = Sample()
sample.PrettyPrint()
“sample.PrettyPrint()”失败,原因是:类型为“sample”的值没有成员“PrettyPrint”

为什么会失败?它能正常工作吗?


额外信息:如果我从框架中删除文件“Sample.swift”并将其放在正在调用框架的应用程序中,则“Sample”类将成功扩展,“Sample.PrettyPrint()”将按预期工作(打印“99”)。

您是否尝试过将扩展和函数公开

public extension Sample {
    public func PrettyPrint () {    
        print("\(x)")
    }
}

在一个类似的例子中,Tie的回答确实帮助了我,但对我来说并不奏效,我必须为该方法添加@objc:

public extension SearchBarWidget {
    @objc public func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        self.endEditing(true)
    }
}

SearchBarWidget类是
@objc public
签名的。

@RamsayConsulting如果这有效,那么你应该将其标记为answerIt有效,只是确保在尝试访问obj c中的swift扩展之前构建你的项目。