У меня есть этот модуль, созданный в Swift, у него есть эта модель образца
@objc public final class SomeModel: NSObject {
var id: Int
var someIdAgain: Int
var name: String
public init(id: Int, someIdAgain: Int, name: String) {
self.id = id
self.someIdAgain = someIdAgain
self.name = name
}
}
Как я могу инициализировать его аргументами в target c? бывший в свифт
SomeModel(id: 7, someIdAgain: 2, name: "John")
-1
lmaoDragger
27 Окт 2019 в 10:10
Я думаю, что здесь уже дан ответ: stackoverflow.com/questions/29949127/…
– lacefarin
27 Окт 2019 в 10:21
2
Возможный дубликат Как создать объект Swift в Objective-C?
– vgel
27 Окт 2019 в 10:28
Вроде то же самое, но разница в том, что мне нужно передать аргументы, так как я могу это сделать?
– lmaoDragger
27 Окт 2019 в 20:00
1 ответ
Добавьте @objc
в свой инициализатор, чтобы иметь возможность использовать
[[SomeModel alloc] initWithId:42 someIdAgain:42 name:@"foo"];
1
Gereon
27 Окт 2019 в 20:28
Я сделал это, но получаю эту ошибку ```Нет видимого интерфейса @interface for
– SomeModel
объявляет селектор `id:someIdAgain:name:````
lmaoDragger
28 Окт 2019 в 06:17
Это странно. Если инициализатор не виден ObjC, сообщение об ошибке должно быть
– No visible @interface for 'SomeModel' declares the selector 'initWithId:someIdAgain:name:'
(по крайней мере, это то, что я получаю в Xcode 11). Вдвойне убедитесь, что вы изменили класс на @objc public init(...)
.
Gereon
28 Окт 2019 в 09:29
На данный момент я сделал обходной путь, создал метод типа
– initSomeModel(id: Int, someIdAgain: Int, name: String)
, затем внутри него я инициализирую тот же класс с помощью тех же переданных аргументов.
lmaoDragger
28 Окт 2019 в 17:23
Похожие вопросы
Связанные вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.