Swift ViewModel 属性无法在 ObjC 中访问

Har*_*ani 2 objective-c mvvm viewmodel ios swift

在 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
    }
}
Run Code Online (Sandbox Code Playgroud)

列表视图控制器.h

NS_ASSUME_NONNULL_BEGIN

@class CartViewModel;

@interface ListViewController : UIViewController
@property (nonatomic, strong) CartViewModel *viewModel;

@end

NS_ASSUME_NONNULL_END
Run Code Online (Sandbox Code Playgroud)

ListViewController.m

NSLog(@"%@", self.viewModel.dataCount); 
Run Code Online (Sandbox Code Playgroud)

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

在前向类对象“CartViewModel”中找不到属性“dataCount”

Dáv*_*tor 5

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

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

所以在你ListViewController.m做的

#import <YourModule/YourModule-Swift.h>