ios - 无法在 ObjC 中访问 Swift ViewModel 属性

标签 ios objective-c swift mvvm viewmodel

在 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); 

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

Property 'dataCount' cannot be found in forward class object 'CartViewModel'

最佳答案

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

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

所以在你的 ListViewController.m

#import <YourModule/YourModule-Swift.h>

关于ios - 无法在 ObjC 中访问 Swift ViewModel 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58917773/

相关文章:

iOS >> CoreData >> 如何找到特定的应用程序文件夹?

iphone - 如何在不使用 Gamekit、EAaccessory 和 iOS 核心蓝牙框架的情况下发现另一个设备?

ios - 为什么我不能使用 StoryBoard 从 viewWithTag 方法访问嵌套的 UIView?

swift - 在 Swift 中添加时间偏移

ios - UITableViewCell 高度在每次旋转变化时增加 2 个像素

ios - 使用 Swift 保存带有圆角和边框的 UIImage

iphone - 这种 objective-c 日期检查方法可以吗?附加代码(得到不同的结果)

objective-c : alloc child class from parent and use parent class instance varriable

swift - Swift 可执行二进制文件是否需要 .swiftmodule、.swiftdoc 和 .build 文件才能运行?

ios - 快速向 callOut View 添加标题