Сбой компиляции Xcode 4.2 с прототипом ячейки - PullRequest
8 голосов
/ 12 августа 2011

Я пробую новую бета-версию Xcode 4.2, и мне интересно, если мой код неправильный или я сталкиваюсь с ошибкой.

Новая функция раскадровки является многообещающей, но в настоящее время чрезвычайно глючной. Прямо сейчас я создал простой проект с табличным представлением. Это табличное представление будет «сгруппированным стилем», содержащим поля UITextFields. Новая функция «Ячейка прототипа» раскадровки позволяет вам создать ячейку прототипа в графическом интерфейсе, которую можно нарисовать с помощью «идентификатора повторного использования» в методе cellForRowAtIndexPath. Когда я перетаскиваю UITextField в эту «ячейку прототипа» и вытягиваю его, он прекрасно работает!

Тем не менее! Когда я ссылаюсь на это текстовое поле на точку в моем коде, я получаю сообщение об ошибке: Без Компиляция не удалась. Невозможно записать в путь: ... (путь к DerivedData)

Почему это? Это ошибка? Кто-нибудь еще получил это?

Ответы [ 7 ]

31 голосов
/ 24 ноября 2011

Я несколько раз сталкивался с этой проблемой в Xcode 4.2 (также и в финальной версии).

Обычно это связано с розеткой или другим соединением, которое вы настроили, из-за чего компилятор расстроен (из-за отсутствия лучшего термина). Хитрость заключается в определении того, какое соединение (я) это.

Вы можете просмотреть подробный вывод процесса сборки в Xcode 4.2, выполнив следующее:

  1. Переключиться на навигатор журналов в самой левой панели
  2. Выберите "Build"
  3. Вы должны увидеть ошибки, в том числе ошибку вашей компиляции.
  4. Вы можете развернуть журнал сборки для этой ошибки, щелкнув самый правый значок (выглядит как список). Это должно раскрыться и отобразить ошибку, вызывающую проблемы.
4 голосов
/ 12 октября 2012

ОК, мой коллега показал мне инспектора соединений и вуаля, было старое соединение, вызвавшее сбой сборки.Поэтому выберите файл .storyboard, откройте инспектор соединений (последний со стрелкой), и он предоставит вам обзор всех соединений.

4 голосов
/ 24 апреля 2012

Если у кого-то все еще есть проблема с этим, я нашел, что решение состоит в том, чтобы использовать теги вместо выходов.

CellForRowAtIndexPath UILabel *titleLabel = (UILabel *)[cell viewWithTag:1001]; titleLabel.text = @"Name";

1 голос
/ 10 ноября 2012

Я получил эту ошибку, когда попытался ввести / в названии ID раскадровки. Убедитесь, что вы используете безопасные символы! (Doh!)

1 голос
/ 01 февраля 2012

Мне пришлось удалить папку для моего проекта в ~ / Library / Developer / Xcode / DerivedData / и перестроить. Вы можете найти имя этой папки в журналах, используя описанную выше процедуру Тони.

EDIT: Теперь я думаю, что это ошибка в XCode (версия 4.2.1). Это прерывисто для меня. Чтобы исправить это, я должен восстановить, иногда два или три раза. Построить / Очистить, кажется, не помогает.

РЕДАКТИРОВАТЬ 2: Хорошо, надеюсь, настоящая проблема. У меня было две ссылки на мою раскадровку в навигаторе проекта (вероятно, остаток от копирования / перестройки проекта). Я только что удалил один из них (убедившись, что удалил только ссылку!). Кажется, может быть проблема (XCode компилирует один и тот же файл дважды одновременно).

1 голос
/ 18 августа 2011

У меня нет идеального решения вашей проблемы, но у меня было то же самое, и я нашел способ заставить его работать (без привязки выхода к TableViewController).

Просто попробуйте воссоздать ваше представлениеС нуля и Build & Run каждый раз, когда вы добавляете компонент.

Чтобы добавить TableViewController => Test, если он показывает пустую таблицу.

Создайте свою собственную ячейку и свяжите выходы вашей ячейки сЭто.(Не забывая изменить класс вашего TableViewCell) => Снова протестируйте его

Затем измените класс TableViewController на свой класс, и теперь вы сможете получить доступ к выходам вашей ячейки.

Это сработало для меня.Я надеюсь, что это будет для вас.

0 голосов
/ 06 июня 2012

Вы не должны добавлять заголовок, изображение или метку с информацией в розетку.

Зачем вам нужна розетка?

Они изменяются неявно внутри кода при реализации протоколов.

...