[FIXED] Swift ViewModel-Eigenschaften können in ObjC nicht zugreifen

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 YourClassnur 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.mdir

#import <YourModule/YourModule-Swift.h>


Beantwortet von –
Dávid Pásztor


Antwort geprüft von –
Mildred Charles (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like