У меня есть этот модуль, созданный в 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