Подтвердить что ты не робот

'Невозможно создать описание в описанииForLayoutAttribute_layoutItem_coefficient. Что-то ноль '

Во-первых, я получил 3 разных UIViews, чтобы заменить подробный вид в Split View Controller на раскадровке iPad

Он хорошо работает на iPad iOS8. Но когда я загружаю один из подробных представлений, приложение вылетает во время работы в iOS7 и iOS 6 Simulator.

Я предполагаю, что это из-за автоматической компоновки на моей раскадровке.

Кто-нибудь знает, как это исправить?

2014-09-25 04:15:19.705 PSTappsperance[48327:60b] Pad AppDelegate ########
2014-09-25 04:15:27.869 PSTappsperance[48327:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to create description in descriptionForLayoutAttribute_layoutItem_coefficient. Something is nil'
*** First throw call stack:
(
0   CoreFoundation                      0x0000000110a5c495 __exceptionPreprocess + 165
1   libobjc.A.dylib                     0x00000001107af99e objc_exception_throw + 43
2   CoreFoundation                      0x0000000110a5c2ad +[NSException raise:format:] + 205
3   Foundation                          0x00000001104ec548 descriptionForLayoutAttribute_layoutItem_coefficient + 145
4   Foundation                          0x00000001104ec3bc -[NSLayoutConstraint equationDescription] + 216
5   Foundation                          0x00000001104ec831 -[NSLayoutConstraint description] + 297
6   CoreFoundation                      0x0000000110a1d1b9 -[NSArray descriptionWithLocale:indent:] + 345
7   Foundation                          0x000000011037e14e _NSDescriptionWithLocaleFunc + 64
8   CoreFoundation                      0x00000001109e1244 __CFStringAppendFormatCore + 7252
9   CoreFoundation                      0x0000000110a1f913 _CFStringCreateWithFormatAndArgumentsAux + 115
10  CoreFoundation                      0x0000000110a7fa5b _CFLogvEx + 123
11  Foundation                          0x00000001103ae276 NSLogv + 79
12  Foundation                          0x00000001103ae20a NSLog + 148
13  UIKit                               0x000000010f927097 -[UIView(UIConstraintBasedLayout_EngineDelegate) engine:willBreakConstraint:dueToMutuallyExclusiveConstraints:] + 62
14  Foundation                          0x00000001104e32ac -[NSISEngine handleUnsatisfiableRowWithHead:body:usingInfeasibilityHandlingBehavior:mutuallyExclusiveConstraints:] + 521
15  Foundation                          0x00000001104e49b1 -[NSISEngine tryUsingArtificialVariableToAddConstraintWithMarker:rowBody:usingInfeasibilityHandlingBehavior:mutuallyExclusiveConstraints:] + 353
16  Foundation                          0x000000011039c26b -[NSISEngine tryToAddConstraintWithMarker:expression:integralizationAdjustment:mutuallyExclusiveConstraints:] + 663
17  Foundation                          0x00000001104ed180 -[NSLayoutConstraint _addLoweredExpression:toEngine:integralizationAdjustment:lastLoweredConstantWasRounded:mutuallyExclusiveConstraints:] + 275
18  Foundation                          0x00000001103981b0 -[NSLayoutConstraint _addToEngine:integralizationAdjustment:mutuallyExclusiveConstraints:] + 204
19  UIKit                               0x000000010f923f41 __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke_2 + 413
20  Foundation                          0x00000001104e529a -[NSISEngine withBehaviors:performModifications:] + 119
21  UIKit                               0x000000010f923d7d __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke + 401
22  UIKit                               0x000000010f923bc3 -[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:] + 197
23  UIKit                               0x000000010f923e57 __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke_2 + 179
24  Foundation                          0x00000001104e529a -[NSISEngine withBehaviors:performModifications:] + 119
25  UIKit                               0x000000010f923d7d __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke + 401
26  UIKit                               0x000000010f923bc3 -[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:] + 197
27  UIKit                               0x000000010f3ab975 __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 95
28  Foundation                          0x00000001104e529a -[NSISEngine withBehaviors:performModifications:] + 119
29  UIKit                               0x000000010f3ab889 -[UIView(Hierarchy) _postMovedFromSuperview:] + 321
30  UIKit                               0x000000010f3b52ac -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1508
31  UIKit                               0x000000010f632778 -[UINavigationTransitionView transition:fromView:toView:] + 454
32  UIKit                               0x000000010f6325b0 -[UINavigationTransitionView transition:toView:] + 25
33  UIKit                               0x000000010f46f4d7 -[UINavigationController _startTransition:fromViewController:toViewController:] + 2893
34  UIKit                               0x000000010f46f787 -[UINavigationController _startDeferredTransitionIfNeeded:] + 547
35  UIKit                               0x000000010f470238 -[UINavigationController __viewWillLayoutSubviews] + 43
36  UIKit                               0x000000010f58a895 -[UILayoutContainerView layoutSubviews] + 202
37  UIKit                               0x000000010f3b7993 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 354
38  QuartzCore                          0x000000011427c802 -[CALayer layoutSublayers] + 151
39  QuartzCore                          0x0000000114271369 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 363
40  QuartzCore                          0x00000001142711ea _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
41  QuartzCore                          0x00000001141e4fb8 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 252
42  QuartzCore                          0x00000001141e6030 _ZN2CA11Transaction6commitEv + 394
43  QuartzCore                          0x00000001141e669d _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89
44  CoreFoundation                      0x0000000110a27dc7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
45  CoreFoundation                      0x0000000110a27d37 __CFRunLoopDoObservers + 391
46  CoreFoundation                      0x0000000110a07522 __CFRunLoopRun + 946
47  CoreFoundation                      0x0000000110a06d83 CFRunLoopRunSpecific + 467
48  GraphicsServices                    0x0000000112dbdf04 GSEventRunModal + 161
49  UIKit                               0x000000010f357e33 UIApplicationMain + 1010
50  PSTappsperance                      0x000000010f092653 main + 115
51  libdyld.dylib                       0x00000001114b05fd start + 1
52  ???                                 0x0000000000000001 0x0 + 1
)libc++abi.dylib: terminating with uncaught exception of type NSException
4b9b3361

Ответ 1

решаемая. Это связано с ограничениями Auto Layout.

Были метки, которые не знали, чтобы определить его ширину.

Но почему работает только на iOS 8? Я привязал два ограничения для определения ширины в Xcode 6

Trailing Space to: superview
Leading Space to: superview

при фиксации ограничений существует опция "Ограничение по маржи", которая по умолчанию проверяется в Xcode 6. И старые версии не поддерживают это.

Ответ 2

Этот сбой появляется при запуске приложения с Поля и базовыми линиями в ограничениях на iOS 7.

Чтобы найти и удалить все строки фиктивных ограничений, вы можете сделать это:

Xcode не выделяет все эти ограничения правильно в Interface Builder, поэтому вы можете использовать это решение:

  • Закрыть Xcode
  • Откройте файл раскадровки в вашем любимом текстовом редакторе
  • Найти все вхождения с помощью регулярного выражения: (\w)Margin" и заменить все их шаблоном: \1" (версия регулярного выражения - это то, что используется в Sublime 2)
  • Найти и удалить из файла раскадровки все строки, используя шаблон: .*"baseline".*\n
  • Теперь сохраните файл и откройте его в Xcode
  • Исправить все появившиеся несоответствия: найти все предупреждения и нажать _ "Обновить ограничения для всех просмотров", чтобы сохранить исходную позицию всех просмотров.
  • Profit!

Update: Я обнаружил, что "базовые" ограничения также приводят к сбоям, но Xcode не показывает никаких предупреждений об этих ограничениях!

Ответ 3

Вы правы @Kyle. Это связано с ограничениями Auto Layout. @Mazen, В моем случае тоже это было "First Baseline Alignment", удалили и работали. Вот несколько проверок для обнаружения/решения проблемы.

  • Чтобы определить, какая раскадровка вызывает эту ошибку, вы можете выполнить быструю проверку. В "Инспекторе файлов" снимите флажок "Использовать автоматический макет" для выбранной раскадровки. Теперь очистите и создайте приложение. Если по-прежнему получать ту же ошибку, ограничение, вызывающее эту ошибку, находится в другой раскадровке или в коде.

  • Как только вы определяете раскадровку, устраните ошибки и предупреждения, отображаемые раскадрой, используя Add Missing Constraints или другие аналогичные параметры.

  • Чтобы фильтровать это ограничение, вызывающее эту ошибку. Удалите 3-4 ограничения за раз (вы можете удалить их еще быстрее), чтобы проверить, не решена ли ошибка. После устранения ошибки определите точное ограничение, вызывающее эту ошибку.

  • Относительно "Ограничение по маржи". В моем случае это проверяется несколькими ограничениями, но не вызывает никаких ошибок/предупреждений ниже iOS8.

  • Вы можете использовать эту ссылку для решения проблем автоматического макета. Устранение проблем с автоматической компоновкой

Надеюсь, это поможет кому-то.