/ / Використання Swift об'єктного класу в Objective-C - об'єкт-c, swift, об'єкт-ініціалізатори

Використовуйте клас об'єкта Swift в Objective-C - об'єктивно-c, швидкі, об'єкт-ініціалізатори

Здравствуйте, я дивився на різні питанняЩо стосується цього, то ніхто з рішення не працює для мене. У мене є об'єкт, який я намагаюся використовувати в об'єкті C, однак при спробі ініціалізації об'єкта я продовжую отримувати "Немає видимого інтерфейсу для об'єкта". Я правильно імпортував мій модуль в об'єктний файл C і додав анотацію @objc, що я щось відсутній? наперед дякую!

Код:

Swift-

import UIKIT

@objc class SaveFile: NSOBject {
var name: String?
var location: String?

//@objc(initId:andSize:) does not work
init(id: String, size: String) {
super.init()
//other code
}

}

Мета C -

    import "testProject-Swift.h"

// functions and initializers

-(void) saveFile {
SaveFile *fileToSave = [[SaveFile alloc] initWithId:self.currentId size:self.size] //No visible @interface for "SaveFile" declares the selector "initWithId:Size:"

}

Відповіді:

2 для відповіді № 1

Спробуйте це:

@objcMembers
class SaveFile: NSObject {//<-NSObject, not NSOBject
var name: String?
var location: String?

init(id: String, size: String) {
super.init()
//other code
}

}

Коли ви пишете клас, який використовується в коді Objective-C, це простий спосіб коментувати @objcMembers.

Або ж можна анотувати всі властивості та методи, включаючи ініціалізатори @objc:

class SaveFile: NSObject {
@objc var name: String?
@objc var location: String?

//@objc(initWithId:size:) do work
@objc init(id: String, size: String) {
super.init()
//other code
}
}