Swift ViewModel 属性无法在 ObjC 中访问



在Swift项目中包含,

CartViewModel.swift

@objc public class CartViewModel: NSObject {
let apiService: APIService
var alertMessage: String? {
didSet {
self.showAlertClosure?()
}
}
var isShow: Bool = false {
didSet {
self.updateStatus?()
}
}
@objc public var dataCount: Int {
return models.count
}
}

ListViewController.h

NS_ASSUME_NONNULL_BEGIN
@class CartViewModel;
@interface ListViewController : UIViewController
@property (nonatomic, strong) CartViewModel *viewModel;
@end
NS_ASSUME_NONNULL_END

ListViewController.m

NSLog(@"%@", self.viewModel.dataCount); 

//访问任何属性都会出现此错误

在正向类对象"CartViewModel"中找不到属性"dataCount">

如果您希望能够访问Objective-C类的实现文件中的类的属性,则需要导入该类的头。通过执行@class YourClass简单地向前声明类只会使类型本身可见,但不会公开其属性/方法。

由于Swift文件没有头,您需要导入模块的Swift头。

所以在你的ListViewController.m中做

#import <YourModule/YourModule-Swift.h>

在Objective-C实现中,您需要为Swift导入Xcode生成的头文件。将其添加到您的导入中,将ProductModuleName替换为目标的名称:

#import "ProductModuleName-Swift.h"

以防其他人出现此问题;使用@class并导入Swift头,但问题尚未解决。。。仔细检查您是否已将Swift类设置为public,而不是internal

相关内容

  • 没有找到相关文章

最新更新