Здравейте гледам на различни въпросипо отношение на това и нищо от решението не работи за мен. Имам обект, който се опитвам да използвам в цел 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
}
}