Ausgabe
In Swift-Projekt enthält,
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);
// Beim Zugriff auf eine beliebige Eigenschaft wird dieser Fehler ausgegeben
Die Eigenschaft „dataCount“ kann im Forward-Klassenobjekt „CartViewModel“ nicht gefunden werden.
Lösung
Wenn Sie auf Eigenschaften einer Klasse innerhalb der Implementierungsdatei einer Objective-C-Klasse zugreifen möchten, müssen Sie den Header der Klasse importieren. Durch einfaches Forward-Deklarieren der Klasse wird @class YourClass
nur der Typ selbst sichtbar, aber seine Eigenschaften/Methoden werden nicht verfügbar gemacht.
Da Swift-Dateien keine Header haben, müssen Sie den Swift-Header Ihres Moduls importieren.
Also bei ListViewController.m
dir
#import <YourModule/YourModule-Swift.h>
Beantwortet von – Dávid Pásztor
Antwort geprüft von – Mildred Charles (FixError Admin)