/ / Използване на Swift обект клас в Objective-C - object-c, swift, инициализатори на обекти

Използване на Swift обект клас в Objective-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
}
}