Ich habe ein Swift-Projekt und versuche, JSQMessagesViewController darin zu verwenden. Ich habe Cocoapods verwendet, um das Framework zu installieren, und importiere es mit einer schnellen Importanweisung.Wie man einen JSQMessagesViewController richtig drückt
import JSQMessagesViewController
Bis zu diesem Punkt gibt es keine Fehler und alles kompiliert ohne Warnung. Wenn ich jedoch versuche, eine neue Instanz auf einen Navigationscontroller zu übertragen, stürzt die App ab.
func openConversation(userId: Int) {
let messageViewController = JSQMessagesViewController();
self.navigationController?.pushViewController(messageViewController, animated: true)
}
Die zweite Zeile der Methode verursacht den Absturz und die Fehlermeldung ist.
2015-08-03 21:44:17.229 [4856:64097] *** Assertion failure in -[JSQMessagesViewController viewWillAppear:], /[my file path]/Pods/JSQMessagesViewController/JSQMessagesViewController/Controllers/JSQMessagesViewController.m:223
2015-08-03 21:44:17.232 [4856:64097] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: self.senderId != nil'
*** First throw call stack:
(
0 CoreFoundation 0x00000001067e3c65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000108590bb7 objc_exception_throw + 45
2 CoreFoundation 0x00000001067e3aca +[NSException raise:format:arguments:] + 106
3 Foundation 0x0000000106ec298f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195
4 JSQMessagesViewController 0x00000001060e9055 -[JSQMessagesViewController viewWillAppear:] + 277
5 UIKit 0x00000001073f8f61 -[UIViewController _setViewAppearState:isAnimating:] + 487
6 UIKit 0x000000010741a355 -[UINavigationController _startCustomTransition:] + 887
7 UIKit 0x000000010742637f -[UINavigationController _startDeferredTransitionIfNeeded:] + 386
8 UIKit 0x0000000107426ece -[UINavigationController __viewWillLayoutSubviews] + 43
9 UIKit 0x00000001075716d5 -[UILayoutContainerView layoutSubviews] + 202
10 UIKit 0x00000001073449eb -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 536
11 QuartzCore 0x0000000108f5ded2 -[CALayer layoutSublayers] + 146
12 QuartzCore 0x0000000108f526e6 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
13 QuartzCore 0x0000000108f52556 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
14 QuartzCore 0x0000000108ebe86e _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242
15 QuartzCore 0x0000000108ebfa22 _ZN2CA11Transaction6commitEv + 462
16 QuartzCore 0x0000000108ec00d3 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89
17 CoreFoundation 0x0000000106716ca7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
18 CoreFoundation 0x0000000106716c00 __CFRunLoopDoObservers + 368
19 CoreFoundation 0x000000010670ca33 __CFRunLoopRun + 1123
20 CoreFoundation 0x000000010670c366 CFRunLoopRunSpecific + 470
21 GraphicsServices 0x000000010b148a3e GSEventRunModal + 161
22 UIKit 0x00000001072c48c0 UIApplicationMain + 1282
23 Startana 0x0000000105fa2807 main + 135
24 libdyld.dylib 0x0000000109306145 start + 1
25 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Nach der Suche online finde ich keine Informationen zu finden, was dieses Problem verursacht.
hinzufügen Versuchen Sie, Fügen Sie diese Zeile 'messageViewController.senderId = userId' nach' let messageViewController = JSQMessagesViewController() ' – Bannings
Danke Bannings, das war die ist verklagen. Die senderId und senderDisplayName müssen festgelegt werden. Wenn Sie Ihren Kommentar als Antwort schreiben, kann ich ihn annehmen, damit Sie das Kopfgeld beanspruchen können. – Tom