Не вдалося вставити нове підключення до розетки: Не вдалося знайти будь-яку інформацію для названого класу


281

Я отримав помилку в Xcode, кажучи про відсутність інформації про контролер перегляду.

Не вдалося вставити нове підключення до розетки: Не вдалося знайти будь-яку інформацію для названого класу

Чому це відбувається?

Знімок екрана 1


2
Я думаю, що про це запитували раніше: stackoverflow.com/questions/17735182/…
Тапані

Я просто кинув Xcode, а потім знову відкрив його. компілятор перезавантажить усі файли, і він зможе виявити шуканий файл
Jane chicken

Переконайтесь, що у файлі контролера перегляду у вас ще немає підключеної розетки. Я виявив, що так і зробив. Після того як я його видалив, у мене не було проблем.
Кекс

Для мене жодне з вищезгаданих рішень не спрацювало. Мені довелося видалити контролер перегляду, який я скопіював і вставив знову в мою дошку, щоб повторно використати це . Я сподіваюся, що це може допомогти комусь із тією ж проблемою.
Арслан Салеем

Це помилка в XCode, і я не знаю, чому вони не виправляють це. Вам потрібно закрити XCode і знову відкрити. Коли ви знову спробуєте поставити торгові точки, але цього разу залиште купу ENTERS перед тим, як зробити її. Вам не потрібно нічого видаляти або витрачати час на інші параметри ... Це вирішить ваші проблеми.
mavesonzini

Відповіді:


692

Ось деякі речі, які можуть виправити це (у збільшенні складності):

  • Очищення проекту ( Продукт> Очистити )
  • Вручну вставити

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }

    і керувати перетягуванням до нього. (Змініть тип за потребою.) Також дивіться це .

  • Повністю закрийте Xcode та перезапустіть проект.

  • Видаліть папку "Отримані дані" (Перейдіть до Xcode> Налаштування > Місцеположення та натисніть сіру стрілку в папці "Отримані дані". Потім видаліть папку проекту.)
  • Клацніть «Видалити» в класі, видаліть посилання (не Перемістити в кошик) та додайте його ще раз. (див. цю відповідь )

не забудьте видалити клас на контролері перегляду, щоб ці кроки спрацювали
reggie

8
Жоден із цих кроків не працював для мене в Xcode 8.3.2. Мені довелося "Показати особу інспектора"> очистити поле "Клас" (виділити ім'я користувацького класу та видалити)> повторно ввести ім'я класу в поле "Клас". Xcode автоматично завершив назву класу. Потім я натиснув Enter.
PeqNP

Додайте рядок alias purgederiveddata='rm -rf ~/Library/Developer/Xcode/DerivedData/*'до свого ~ / .bashrc, щоб скористатися командою purgederiveddataдля очищення за допомогою однієї команди
eskimwier

Я знайшов інший спосіб виправити цю проблему. Це сталося зі мною, коли я змінив деякі параметри збірки, щоб покращити швидкість збирання. stackoverflow.com/a/50555888/2952876
Матіас Ван Хаутт

Я б настійно закликав усіх вас спробувати моє рішення нижче. Потрібно знати, що людям доводиться перезавантажувати комп’ютери для помилок, які часто з’являються.
Стівен Пол

134

Або якщо жодне з перерахованих вище не працює, введіть спершу ім'я розетки у файл, @IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!а потім натисніть та перетягніть його з розетки в ручку до змінної, яку ви просто створили програмно. Він повинен працювати без зайвих проблем з чищенням, будівництвом та видаленням чого-небудь.


4
часто швидше рішення замість того, щоб витрачати віки на очищення, будівництво тощо, завдяки.
потік

1
Дуже приємно, і як тільки ви це зробите, Автомат починає показуватися, дякую.
AmJa

1
Кулак усіх підключіть ваш об’єкт XIB до IBoutlets. Потім спробуйте підключити їх обмеження IBOutlets. без цього він завжди буде показувати помилки.
Чандрамані

Це також може змінити те, де ви намагаєтеся вставити нову розетку. Бо працювала верхня частина списку (там, де є чіткий простір); середина списку не зробила.
Річард

1
Це слід відзначити як найкращу відповідь. Це легше, швидше і надійніше. Також це працює весь час! Гарна робота і спасибі @StephenPaul
denis_lor

51

Просто виконайте два наступні кроки, щоб позбутися цієї помилки

  1. Очистіть проект, використовуючи Продукт> очистити
  2. Запустіть проект

Тепер спробуйте додати дію чи розетку. Це воно.

Щасливе кодування


4
Дивно ... цей простий два кроки допомогли вирішити проблему і для мене. Тож рекомендую спробувати спробувати ці кроки спочатку :-)
крос-код

49

Жодна порада в найкращій відповіді не працювала для мене. Йшов з розуму. Потім помітив, що помічник редактора якимось чином встановив " Посібник", і я був на ViewController.swift (інтерфейс) замість файлу ViewController.swift.

Змінили це і вирішили проблему. Трохи соромно, але ей, ми всі вчимося.

введіть тут опис зображення


1
Відповідь на збереження життя! Жодна з інших відповідей не вирішила його раз і назавжди. Шкода, що опис помилки не дає найменшого натяку на те, що ви можете бути у файлі worng. Дякую. +1 для зображення, це все зрозуміло.
Паулуко

Я помітив щось досить схоже, але інше: у шляху вгорі, де відображається назва класу, було просто ім'я класу, але відсутній початок шляху як контролер myProject> appName>, а потім клас. Я вибрав ще один клас, потім повернувся до проблемного, і все гаразд
claude31

15

Ось вирішені для мене кроки:

  1. Видаліть посилання на ім'я класу з View (storyboard / xib) та збережіть;
  2. Додайте назву класу ще раз і збережіть;
  3. Очистити і побудувати;

Готово!


10

У мене було те саме питання. Я втомився нижче від рішень, але не працював:

  1. Clean Project (cmd + shift + k) і навіть Clean Project Build (cmd + shift + alt + k)
  2. Deleted Derived data і Module Cache content

Нижче вирішено це питання:

  1. Перейдіть до файлу вихідного коду та напишіть IBOutlet / IBActionвручну (бажано скопіювати пасту)

Знімок екрана 1

  1. Потім перейдіть до файлу аркушів розгортки та відкрийте Utilites вікно
  2. Йти до Connection Inspector
  3. Потім підключіть IBOutletі IBActionнаписаний у вихідному файлі інструмент Interface Builder.

Знімок екрана 2


Перетягування торгових точок / дій взагалі не працювало, але після того, як я це зробив вручну, як це було, все знову працювало належним чином.
Джейсон

Це стандартний альтернативний метод встановлення з'єднань. У випадку дії перемикачів - єдиний спосіб - AFAIK. У дошці розкадрування ви також можете клацнути правою кнопкою миші на контролері, знайти функцію та встановити з'єднання.
curt

8

У мене була така ж проблема. Я зрозумів, що в X-коді Manualбуло обрано пункт, коли я намагався створити розетку за допомогою перетягування

введіть тут опис зображення

Після того, як я встановив його на автоматичному, він працював

введіть тут опис зображення


У мене була така точна проблема. Не помітив навіть різниці.
Танець Джошуа

Чудово !!! Я втратив стільки часу на цей проект очищення від помилок, перезапуск xCode, видалення отриманих даних, але це було єдине рішення, яке працювало на мене! Дуже дякую!
Антон Ерегін

7

Я вирішив цю проблему, програмуючи створення міток та текстових полів, а потім перетягнувши команду від маленьких порожніх кіл зліва від коду до компонентів на дошці розкадрувань. Щоб проілюструвати міркування: я написав @IBOutlet weak var HelloLabel: UILabel!, а потім натиснув Command і перетягнув код у компонент на дошці розкадрування.


Це рішення прекрасно працювало для мене! Крім того, @IBOutlet weak var myButton: UIButtonя використовував той самий процес, щоб налаштувати, @IBAction func doSomething(_ sender: Any) { }а потім підключив цю функцію до UIButton на моїй розгортці. Дякуємо, що поділилися цим @KuboAndTwoStrings
Nii Mantse

6
  1. Закрийте проект, над яким працюєте.
  2. Видаліть папку "DerivedData" вашого проекту. (Ця папка може знаходитися всередині папки вашого проекту, або всередині
    ~/Library/Developer/Xcode/DerivedData/
    (ваш проект) /) або деінде, яке ви налаштували.
  3. перезавантажте проект.

4

Я знайшов більш просте вирішення, оскільки цю помилку можна знайти в XCODE 9.

Перший крок перейдіть до свого контролера перегляду та вручну напишіть властивість, яку ви хочете підключити, як наведений нижче приклад, переконайтеся, що ви використовуєте формат нижче.

@IBOutlet слабкі питання varStackView: UIStackView!

Крок другий перейдіть до вашої розкадровки та підключіть свій погляд або все, що ви намагаєтеся підключити до ресурсу, який ви створили на кроці 1.

Вищезгадане заощадить ваш час на видалення та очищення отриманих даних.


3

Я отримав цю помилку, коли перейменував клас. Тоді я вирішив це, лише дотримуючись наведених нижче кроків

  • У меню Xcode -> Product->Clean
  • Restart Xcode

це було єдине рішення, яке для мене спрацювало досить смішно.
Йосиф Астрахан

2

У моєму випадку це був bc, я вибрав новий файл UIViewController в IB, а потім спробував перетягнути ctrl до цього нового контролера, попередньо не видаляючи попередні з'єднання в Інспекторі з'єднань. Видаліть їх першими та спробуйте ще раз.


2

Для мене це працювало, коли на правій вкладці> Локалізація я поставив прапорець англійською мовою. Спочатку перевіряли лише Базу. Після цього у мене більше не було проблем. Сподіваюсь, це допомагає!


2

введіть тут опис зображення

Я вибрав Автоматичний варіант, щоб вибрати файл ViewController.swift. І тоді я можу взяти торгові точки.


2

Виконайте наступні два кроки лише для позбавлення від цієї помилки.

1.  Clean Project using Product -> clean.
2.  Run the Project.

Тепер спробуйте додати / З’єднати дії або точки розгляду.

Працюю штрафу для мене багато разів.


1

Це сталося, коли я додав Swiftфайл у Objective-Cпроект.
Отже, у цій ситуації те, що ти можеш зробити. .

  • Select MY_FILE.Swift >> Delete >> Remove Reference
  • Select MY_FOLDER >> Add MY_FILE.Swift
  • Voila ! You are good to go .

До цього! Я вже півгодини намагаюся вирішити це питання самостійно. Такі проблеми, як це на Дошках розкопок, легко вирішити. Дякую! Це мені дуже допомогло!
Глен

0

Найпростіше рішення: - Я використовував xCode 7 та iOS 9.

у вашому .m

видалити #import "VC.h"

збережіть .m і знову зв’яжіть свою розетку, вона справно працює.


0

Я використовував xCode 7 та iOS 9.

у вашому .m

видалити #import "VC.h"

збережіть .m і знову зв’яжіть свою розетку, вона справно працює.

у вашому .m

додати #import "VC.h"

зберегти .m


0

Нічого з цього не працювало для мене, але я це зрозумів.

Усередині розкадруванні я скопіював відповідний ViewController в буфер обміну і видалив його, потім я вставив його знову.

Раптом все знову спрацювало як шарм!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.