Свойство, определенное в файле Objective C, не видно в Swift (та же цель) - PullRequest
0 голосов
/ 17 мая 2018

У меня есть класс DataStore, определенный в Objective C. Он имеет свойство controller типа Controller (класс, определенный в Swift).Оба класса находятся в одной цели Foo.Когда я пытаюсь получить доступ к свойству controller внутри класса Baz, я получаю сообщение об ошибке:

Значение типа 'DataStore' не имеет члена 'controller'

Baz написано на Swift и находится в той же цели Foo.

DataStore.m (цель Foo)

#import <Foo/Foo-Swift.h>
@interface DataStore ()
@property (nonatomic, strong) Controller *controller;
@end

DataStore.h (цель * 1023)*)

@class Controller;
@interface DataStore: NSObject
@property (readonly, strong, nonatomic) Controller *controller;
@end

Controller.swift (цель Foo)

@objc(NHController)
public class Controller: NSObject {
  //
}

Baz.swift (цель Foo, используется в качестве другой цели)

class Bar {
   func test() {
     let dataStore = DataStore()
     dataStore.controller // compiler error
   }
}

Я пробовал чистить и строить дюжину раз.Я попытался очистить производные данные, но ничего не сделал.Я только что переместил Bar к цели Foo.У меня не было проблем с доступом к свойствам DataStore раньше (когда Baz было в другой цели.)

1 Ответ

0 голосов
/ 17 мая 2018

Проблема была связана с циклическими ссылками между Swift и Objective-C: https://cjwirth.com/tech/circular-references-swift-objc

Обновление Controller.swift исправлено:

public typealias Controller = NHController

@objc public class NHController: NSObject {
  //
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...