Здравствуйте, я дивився на різні питанняЩо стосується цього, то ніхто з рішення не працює для мене. У мене є об'єкт, який я намагаюся використовувати в об'єкті 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
}
}