无法从Objective-C View控制器 - iOS访问Swift var

Sup*_*off 12 var properties objective-c ios swift

我有一个带有Objective-C和基于Swift的视图控制器的应用程序.我以编程方式从我的一个基于Objective-C的视图控制器打开一个基于Swift的视图控制器.我遇到的问题是我无法从Objective-C代码访问Swift变量.

我的Swift代码:

@IBOutlet weak var profPicture: UIImageView!
@IBOutlet weak var profVerified: UIImageView!
@IBOutlet weak var profName: UILabel!
var passedUser:PFUser!
Run Code Online (Sandbox Code Playgroud)

我的Objective-C代码:

MyProfileViewController *screen = [[MyProfileViewController alloc] initWithNibName:@"Main" bundle:nil];
self.dataPass = screen;
dataPass.profName.text = @"";
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:screen animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

我能够访问像IBOutlets这样的@属性,但是我无法访问和编辑var对象.

我这样做,因为当我呈现基于Swift的视图控制器时,我想从基于Objective-C的视图控制器将数据传递到基于Swift的视图控制器.

为什么我不能访问var对象?

这是我得到的错误:

在此输入图像描述

错误如下:

在'MyProfileViewController*'类型的对象上找不到属性'passUser'

谢谢你的时间,丹.

Kis*_*mar 12

斯威夫特4:

使用@objc关键字访问swift变量.

class Car: NSObject {
    @objc let name: String
    @objc let numberOfWheels: Int
    let manufacturer: String
}
Run Code Online (Sandbox Code Playgroud)


dan*_*ham 8

我对 ObjectiveC 枚举有同样的问题,它是 Swift 类中的一个变量,在 ObjectiveC 中无法访问。

将变量声明为 public 不起作用,相反,我必须在声明它时给枚举一个默认值,以便将它包含在 [project]-Swift.h 标头中。

 var firstQuestion: AnswerResult = AnswerNone
Run Code Online (Sandbox Code Playgroud)

以下方法无效:

var firstQuestion: AnswerResult!
Run Code Online (Sandbox Code Playgroud)


Sul*_*han 7

您必须将变量声明为public.

默认情况下,变量具有internal访问权限,这意味着只能从模块内部访问它们.Obj-C代码不在他们的模块中.