2

假设我在 Objective C 实现文件 ( MyVC.m) 中有以下内容:

@interface MyVC ()
  @property (nonatomic, weak) IBOutlet UILabel *titlelabel;
@end

如何将此私有属性公开给 Swift(测试)代码?以下导致编译器错误:

extension LTConversationSelectionVC {
   @IBOutlet weak var assetBar: LTAssetBar?
}
4

3 回答 3

2

不幸的是,没有办法完全使用 Swift 来做到这一点。但是,您可以在测试目标的 Objective-C 文件中公开该属性,然后将其放入测试目标的桥接头中。

MyVC+Tests.h添加到您的测试目标:

@interface MyVC (Tests)
  @property (nonatomic, weak) IBOutlet UILabel *titlelabel;
@end

MyAppTests-Bridging-Header.h

#import "MyVC+Tests.h"

然后,在测试目标中的 Swift 代码中,您可以titleLabel按预期使用该属性。

let vc = MyVC()
vc.titleLabel.text = "Hello, world!"
于 2016-01-28T20:31:39.843 回答
1

来自苹果文档


扩展可以添加新的计算属性,但它们不能添加存储属性,或将属性观察者添加到现有属性。


Apple 文档链接在这里

于 2015-03-23T17:12:31.203 回答
0

您可以从 Bridging Header 文件中执行相同的类中属性技巧。只需转发任何调用 swift 库的类。那应该解决这个问题。

于 2015-10-22T14:56:57.620 回答