2013-06-05 5 views
8

После того, как несколько разработчиков работали над раскадрой в одном из наших приложений, мы теперь получаем эту ошибку при попытке открыть раскадровку в Xcode Interface Builder:Невозможно открыть раскадровку (com.apple.InterfaceBuilder error -1.)

Невозможно открыть документ «MainStoryboard_iPhone.storyboard». Операция не может быть завершена. (ошибка com.apple.InterfaceBuilder -1.)

Просмотрите журнал консоли для получения дополнительной информации.

Мы все используем последнюю версию Xcode (4.6.2 4H1003), и все изменения были внесены в раскадровку в Interface Builder. Нет дополнительной информации, отображаемой в журнале консоли. Я предполагаю, что ошибка относится к одному и тому же журналу консоли, где отображаются сообщения журнала и отладки, которые полностью пусты.

Один из разработчиков получает эту же ошибку при попытке открыть раскадровку в другом из наших приложений, над которыми я работал. Тем не менее, эта раскадровка прекрасно открыта для меня в Xcode на моем компьютере, поэтому мы никогда не удосужились заглянуть в ошибку больше в то время (это произошло несколько месяцев назад). Но на этот раз мы все получим ту же ошибку (4 из нас протестировали ее открытие на наших собственных компьютерах).

Мы используем GitHub для управления нашим источником управления в обоих проектах, используя несколько разных клиентов Git. Любые идеи относительно того, что вызывает эту ошибку и как ее исправить?

UPDATE: Это выход к /var/logs/system.log на моем компьютере после попытки открыть раскадровку:

Jun 5 16:38:44 my-computer-host-name Xcode[271]: Exception raised while unarchiving document objects - *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil 
Jun 5 16:38:45 my-computer-host-name Xcode[271]: [MT] DVTAssertions: Warning in /SourceCache/IDEKit/IDEKit-2113/Framework/Classes/Editor/IDEEditorDocument.m:1364 
    Details: Message sent to invalidated IBStoryboardDocument instance <IBStoryboardDocument: 0x40ecc34c0>. Backtrace for invalidation: 
     0 0x000000010d814f86 -[IDEEditorDocument _invalidate] (in IDEKit) 
     1 0x000000010d883291 -[IDEEditorDocument initForURL:withContentsOfURL:ofType:error:] (in IDEKit) 
     2 0x00000001103005d0 -[IBDocument initForURL:withContentsOfURL:ofType:error:] (in IDEInterfaceBuilderKit) 
     3 0x000000010d882efd +[IDEDocumentController _newEditorDocumentWithClass:forURL:withContentsOfURL:ofType:extension:error:] (in IDEKit) 
     4 0x000000010d882dba -[IDEEditorContext _newEditorDocumentWithClass:forURL:withContentsOfURL:ofType:extension:error:] (in IDEKit) 
     5 0x000000010d88290c -[IDEEditorContext _openNavigableItem:withContentsOfURL:documentExtension:shouldInstallEditorBlock:] (in IDEKit) 
     6 0x000000010d991628 -[IDEEditorContext _notifyDelegateAndOpenNavigableItem:withContentsURL:documentExtensionIdentifier:locationToSelect:annotationRepresentedObject:stateDictionary:annotationWantsIndicatorAnimation:exploreAnnotationRepresentedObject:highlightSelection:] (in IDEKit) 
     7 0x000000010d8bfe7b -[IDEEditorContext _notifyDelegateAndOpenEditorOpenSpecifier:updateHistory:] (in IDEKit) 
     8 0x000000010d8bf99c -[IDEEditorContext _openEditorOpenSpecifier:updateHistory:] (in IDEKit) 
     9 0x000000010d8bf8ba -[IDEEditorContext openEditorOpenSpecifier:] (in IDEKit) 
    10 0x000000010d8cbf40 -[IDEEditorGeniusMode openEditorOpenSpecifier:editorContext:] (in IDEKit) 
    11 0x000000010d8bf76e -[IDEEditorArea _openEditorOpenSpecifier:editorContext:takeFocus:] (in IDEKit) 
    12 0x000000010d9a3174 __108+[IDEEditorCoordinator _doOpenEditorOpenSpecifier:forWorkspaceTabController:editorContext:target:takeFocus:]_block_invoke (in IDEKit) 
    13 0x000000010d8bf6cc +[IDEEditorCoordinator _doOpenWithWorkspaceTabController:editorContext:target:allowFallback:documentURL:usingBlock:] (in IDEKit) 
    14 0x000000010d8bf12d +[IDEEditorCoordinator _doOpenEditorOpenSpecifier:forWorkspaceTabController:editorContext:target:takeFocus:] (in IDEKit) 
    15 0x000000010d8bed45 -[_IDEOpenRequest _runIfNecessary] (in IDEKit) 
    16 0x00007fff8bfde395 __NSFireDelayedPerform (in Foundation) 
    17 0x00007fff8b169804 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (in CoreFoundation) 
    18 0x00007fff8b16931d __CFRunLoopDoTimer (in CoreFoundation) 
    19 0x00007fff8b14ead9 __CFRunLoopRun (in CoreFoundation) 
    20 0x00007fff8b14e0e2 CFRunLoopRunSpecific (in CoreFoundation) 
    21 0x00007fff8ac57eb4 RunCurrentEventLoopInMode (in HIToolbox) 
    22 0x00007fff8ac57c52 ReceiveNextEventCommon (in HIToolbox) 
    23 0x00007fff8ac57ae3 BlockUntilNextEventMatchingListInMode (in HIToolbox) 
    24 0x00007fff85f5d563 _DPSNextEvent (in AppKit) 
    25 0x00007fff85f5ce22 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in AppKit) 
    26 0x00007fff85f541d3 -[NSApplication run] (in AppKit) 
    27 0x00007fff85ef8c06 NSApplicationMain (in AppKit) 
    28 0x000000010cbc9b6f (in Xcode) 
    29 0x000000010cbc9b00 (in Xcode) 
    30 0x0000000000000002 

    Object: <IBStoryboardDocument: 0x40ecc34c0> 
    Method: -updateChangeCount: 
    Thread: <NSThread: 0x40030a220>{name = (null), num = 1} 
    Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide. 

И это выход журнала на компьютере другого Дэв после пытаясь открыть раскадровку в другом проекте, который мы получаем ту же самую ошибку на (это раскадровка, который открывает штраф на моем компьютере):

Jun 5 17:20:13 other-dev-computer-host-name Xcode[157]: Exception raised while unarchiving document objects - *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil 
Jun 5 17:20:13 other-dev-computer-host-name Xcode[157]: [MT] DVTAssertions: Warning in /SourceCache/IDEKit/IDEKit-2113/Framework/Classes/Editor/IDEEditorDocument.m:1364 
    Details: Message sent to invalidated IBStoryboardDocument instance <IBStoryboardDocument: 0x409ec3340>. Backtrace for invalidation: 
     0 0x000000010d746f86 -[IDEEditorDocument _invalidate] (in IDEKit) 
     1 0x000000010d7b5291 -[IDEEditorDocument initForURL:withContentsOfURL:ofType:error:] (in IDEKit) 
     2 0x00000001102755d0 -[IBDocument initForURL:withContentsOfURL:ofType:error:] (in IDEInterfaceBuilderKit) 
     3 0x000000010d7b4efd +[IDEDocumentController _newEditorDocumentWithClass:forURL:withContentsOfURL:ofType:extension:error:] (in IDEKit) 
     4 0x000000010d7b4dba -[IDEEditorContext _newEditorDocumentWithClass:forURL:withContentsOfURL:ofType:extension:error:] (in IDEKit) 
     5 0x000000010d7b490c -[IDEEditorContext _openNavigableItem:withContentsOfURL:documentExtension:shouldInstallEditorBlock:] (in IDEKit) 
     6 0x000000010d7d9c96 -[IDEEditorContext _openNavigableItem:withContentsOfURL:shouldInstallEditorBlock:] (in IDEKit) 
     7 0x000000010d8c3667 -[IDEEditorContext _notifyDelegateAndOpenNavigableItem:withContentsURL:documentExtensionIdentifier:locationToSelect:annotationRepresentedObject:stateDictionary:annotationWantsIndicatorAnimation:exploreAnnotationRepresentedObject:highlightSelection:] (in IDEKit) 
     8 0x000000010d7f1e7b -[IDEEditorContext _notifyDelegateAndOpenEditorOpenSpecifier:updateHistory:] (in IDEKit) 
     9 0x000000010d7f199c -[IDEEditorContext _openEditorOpenSpecifier:updateHistory:] (in IDEKit) 
    10 0x000000010d7f18ba -[IDEEditorContext openEditorOpenSpecifier:] (in IDEKit) 
    11 0x000000010d7f189f -[IDEEditorModeViewController openEditorOpenSpecifier:editorContext:] (in IDEKit) 
    12 0x000000010d7f176e -[IDEEditorArea _openEditorOpenSpecifier:editorContext:takeFocus:] (in IDEKit) 
    13 0x000000010d8d5174 __108+[IDEEditorCoordinator _doOpenEditorOpenSpecifier:forWorkspaceTabController:editorContext:target:takeFocus:]_block_invoke (in IDEKit) 
    14 0x000000010d7f16cc +[IDEEditorCoordinator _doOpenWithWorkspaceTabController:editorContext:target:allowFallback:documentURL:usingBlock:] (in IDEKit) 
    15 0x000000010d7f112d +[IDEEditorCoordinator _doOpenEditorOpenSpecifier:forWorkspaceTabController:editorContext:target:takeFocus:] (in IDEKit) 
    16 0x000000010d7f0d45 -[_IDEOpenRequest _runIfNecessary] (in IDEKit) 
    17 0x00007fff98955395 __NSFireDelayedPerform (in Foundation) 
    18 0x00007fff909bd804 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (in CoreFoundation) 
    19 0x00007fff909bd31d __CFRunLoopDoTimer (in CoreFoundation) 
    20 0x00007fff909a2ad9 __CFRunLoopRun (in CoreFoundation) 
    21 0x00007fff909a20e2 CFRunLoopRunSpecific (in CoreFoundation) 
    22 0x00007fff92e5eeb4 RunCurrentEventLoopInMode (in HIToolbox) 
    23 0x00007fff92e5ec52 ReceiveNextEventCommon (in HIToolbox) 
    24 0x00007fff92e5eae3 BlockUntilNextEventMatchingListInMode (in HIToolbox) 
    25 0x00007fff96036563 _DPSNextEvent (in AppKit) 
    26 0x00007fff96035e22 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in AppKit) 
    27 0x00007fff9602d1d3 -[NSApplication run] (in AppKit) 
    28 0x00007fff95fd1c06 NSApplicationMain (in AppKit) 
    29 0x000000010caf9b6f (in Xcode) 
    30 0x000000010caf9b00 (in Xcode) 
    31 0x0000000000000002 

Object: <IBStoryboardDocument: 0x409ec3340> 
Method: -updateChangeCount: 
Thread: <NSThread: 0x40030a1a0>{name = (null), num = 1} 
Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide. 

Оба журнала выходы очень похожи. В стеке вызовов второго выхода есть строка в строке 6: [IDEEditorContext _openNavigableItem:withContentsOfURL:shouldInstallEditorBlock:] (in IDEKit). И строка 11 (10 на 1-м) ссылается на метод IDEEditorModeViewController вместо IDEEditorGeniusMode. В противном случае выходы журнала идентичны.

Обратите внимание, что эта 2-я раскадровка, изначально полученная этой ошибкой, не имела бы проблем с конфликтами слияния Git, поскольку я единственный разработчик, который работал над этой раскадрой. Мне никогда не приходилось объединять коммиты с этим репозиторием, поскольку я являюсь единственным разработчиком.

+0

Вы можете проверить предыдущую версию раскадровки и успешно открыть ее с той же установкой Xcode на тех же компьютерах? –

+0

Возможный дубликат [com.apple.InterfaceBuilder error -1. Раскадровка не может быть открыта] (http://stackoverflow.com/questions/17495793/com-apple-interfacebuilder-error-1-storyboard-can-not-be-opened) – Laszlo

ответ

5

Является ли проект использованием каких-либо пользовательских шрифтов?

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

Я получил смесь как исключение «invalidate», так и исключение массива. И исключение массива привело другого разработчика к similar StackOverflow question, где он понял, что у нас есть пользовательские шрифты.

+0

Оба эти проекта будут использовать пользовательские шрифты, да. Прошло некоторое время с тех пор, как у нас была эта ошибка, но если мы увидим ее снова, я обязательно буду помнить об этом. Спасибо за совет. –

+0

Я смог подтвердить это исправление проблемы! Благодарю. –

+0

Если вы не заметили, что это означает также поддержку пользовательских шрифтов в раскадровке. В заключение! – Kuba

2

Эта проблема возникает из-за слияния изменений друг с другом. Формат раскадровки основан на XML. Когда вы вносите изменения, эти изменения сохраняются в файле проекта. Xcode кажется недетерминированным в том, как он сохраняет структуру этого файла, вещи могут быть отсортированы по-разному, объекты могут появляться в разных местах структуры. Это не имеет значения, когда вы работаете самостоятельно, но когда два или более людей вносят изменения в раскадровку, слияния могут стать очень уродливыми. Несмотря на то, что git, похоже, способен объединить файлы в порядке, структура файла повреждена, и вы не сможете открыть свои раскадровки.

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

Возможно, вам лучше обработать файлы проекта xcode в виде двоичных файлов в вашем репозитории git. См. http://robots.thoughtbot.com/post/33796217972/xcode-and-git-bridging-the-gap для хорошего чтения.

Что касается вашей ситуации, вам, вероятно, придется проверить хорошую версию вашего файла проекта и перестроить свои изменения в раскадровке.

+0

Как это объяснить эту же ошибку, я получать при открытии одного и того же раскадровки на двух разных компьютерах, на одном из них работает, а другой получает ошибку? Кроме того, как я могу точно увидеть, где в структуре XML возникает ошибка? Я хорошо осведомлен о том, как эта структура работает, и в то время как она всегда раздражает, и мы делаем все возможное, чтобы избежать ее, иногда слияния изменений в раскадровки, когда требуется потянуть. Есть ли где-то Interface Builder журналы больше информации, например, строка, в которой он не работает? –

+1

Вы уверены, что оба проекта на обоих компьютерах одинаковы? Кроме того, Xcode регистрируется в /var/log/system.log – Marcel

+0

Да, проекты идентичны, вытащил последнюю из того же репозитория. Мы пробовали это несколько раз, так как мы впервые заметили ошибку несколько месяцев назад. Каждый раз, когда мы надеялись, что он начнет работать с другим обновлением Xcode или чем-то еще. Я продолжал редактировать сам раскадровку. Но когда другой разработчик пытается открыть его на своем компьютере, он получает ту же ошибку. –

-1

Это работает для меня:

в среде с ошибкой удалить .storyboard файл (перейти в корзину).

копия .storyboard из среды, которая работает и отправляет (сольный файл) в среду, которая не работает (электронная почта, флэш-накопитель, Skype, однако).

перетащить .storyboard обратно в разбитой среде (копия и сохранить)

фиксированы.

+0

^Этот метод работает. –

+0

люди, возможно, проголосовали за это исправление, но оно продолжает работать. –

+0

Это сработало и для меня. Благодарю. – Maxim

24

Как указано в Marcel: это иногда происходит при слиянии. Но его ответ не указывает на что-то конкретное, поэтому позвольте мне дать подсказку, с чем нам пришлось иметь дело несколько раз. У нас были некоторые нечитаемые раскадровки после слияния с файлом, который был изменен локально.

Мы могли бы их исправить, открыв раскадровку в текстовом режиме и проверять каждый segue reference в конце раскадровки файла:

<inferredMetricsTieBreakers> 
    <segue reference="gJw-Ph-JeV"/> 
    <segue reference="Olp-GN-hLL"/> 
    <segue reference="aFq-vB-ngK"/> 
</inferredMetricsTieBreakers> 

Поиск раскадровки для цитируемых значений. Если вы не можете найти второе соответствие для этой строки, закомментируйте эту строку с помощью <!-- -->. После удаления всех недействительных ссылок segue Xcode смог снова открыть раскадровки.

+0

это было в моем случае. –

+0

убедитесь, что каждый текстовый фрагмент, подобный «DPH-X9-4b0», может достигать более одного раза – WINSergey

+0

Вы спасли мой день! Спасибо за подсказку! Это именно то, что случилось со мной. – mginius

Смежные вопросы