2016-08-06 10 views
0
import UIKit 
import Firebase 
import FirebaseAuth 
import JSQMessagesViewController 

class ChatViewController: JSQMessagesViewController { 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     super.prepareForSegue(segue, sender: sender) 
     let navVc = segue.destinationViewController as! UINavigationController // 1 
     let chatVc = navVc.viewControllers.first as! ChatViewController // 2 
     chatVc.senderId = FIRAuth.auth()?.currentUser?.uid // 3 
     chatVc.senderDisplayName = "" // 4 
    } 

} 

とリアルタイムチャット、私は、このリンクhttps://www.raywenderlich.com/122148/firebase-tutorial-real-time-chatからJSQMessagesViewControllerを使ってチャットを構築しようとしているといつも私はこのようなエラーが出る:で

迅速Firebaseチュートリアル:JSQMessagesViewController

<p>2016-08-06 19:45:41.706 ChatChat[13399:] <FIRAnalytics/INFO> Firebase Analytics enabled<br> Signed in with uid: RhBSL8rOBjTfd11pcdB1aJ076fl2<br> 2016-08-06 19:45:51.276 ChatChat[13399:361284] RhBSL8rOBjTfd11pcdB1aJ076fl2<br> 2016-08-06 19:45:51.448 ChatChat[13399:361284] *** <br> Assertion failure in 
-[ChatChat.ChatViewController viewWillAppear:], /Users/admin/Downloads/ChatChat-starter/Pods/JSQMessagesViewController/JSQMessagesViewController/Controllers/JSQMessagesViewController.m:276 2016-08-06 19:45:51.463 ChatChat[13399:361284] *** <br> Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: self.senderId != nil'<br> 
*** First throw call stack:<br> (<br> 0 CoreFoundation      0x0000000106c50d85 
__exceptionPreprocess + 165 <br> 1 libobjc.A.dylib      0x0000000108a2cdeb objc_exception_throw + 48 <br> 2 CoreFoundation 0x0000000106c50bea +[NSException raise:format:arguments:] + 106 <br> 3 Foundation       0x00000001070a1d5a 
-[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198 <br> 4 JSQMessagesViewController   0x0000000106827a06 
-[JSQMessagesViewController viewWillAppear:] + 342 <br> 5 UIKit        0x00000001076192bd -[UIViewController 
_setViewAppearState:isAnimating:] + 710 <br> 6 UIKit        0x0000000107619958 -[UIViewController __viewWillAppear:] + 149 <br> 7 UIKit        0x0000000107658c83 
-[UINavigationController _startTransition:fromViewController:toViewController:] + 781 <br> 8 UIKit        0x0000000107659c4d 
-[UINavigationController _startDeferredTransitionIfNeeded:] + 890 <br> 9 UIKit        0x000000010765ad0b 
-[UINavigationController __viewWillLayoutSubviews] + 57 <br> 10 UIKit        0x0000000107809503 -[UILayoutContainerView layoutSubviews] + 248 <br> 11 UIKit        0x0000000107533980 
-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703 <br> 12 QuartzCore       0x000000010c13ac00 -[CALayer layoutSublayers] + 146 <br> 13 QuartzCore       0x000000010c12f08e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366 <br> 14 QuartzCore       0x000000010c12ef0c 
_ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 <br> 15 QuartzCore       0x000000010c1233c9 
_ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277 <br> 16 QuartzCore       0x000000010c151086 
_ZN2CA11Transaction6commitEv + 486 <br> 17 UIKit        0x00000001074a519b _afterCACommitHandler + 174 <br> 18 CoreFoundation 0x0000000106b75c37 
__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 <br> 19 CoreFoundation      0x0000000106b75ba7 
__CFRunLoopDoObservers + 391 <br> 20 CoreFoundation      0x0000000106b6b7fb __CFRunLoopRun + 1147 <br> 21 CoreFoundation  0x0000000106b6b0f8 CFRunLoopRunSpecific + 488 <br> 22 GraphicsServices     0x0000000109d49ad2 GSEventRunModal 
+ 161 <br> 23 UIKit        0x0000000107478f09 UIApplicationMain + 171 <br> 24 ChatChat       0x0000000105344be2 main + 114 <br> 25 libdyld.dylib     0x000000010952b92d start + 1 <br> 26 ???        0x0000000000000001 0x0 + 1) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb) </p><br> 

答えて

0

ルックあなたのエラーの理由。具体的には、reason: 'Invalid parameter not satisfying: self.senderId != nil'。これは、senderIdに設定している値がnilであることを意味します。すなわち、この場合、FIRAuth.auth()?.currentUser?.uidnilです。有効なユーザがFirebaseにサインインしていることを確認してください。うまくいけば、これは役立ちます!

0

また、セキュリティベースのセキュリティ設定で匿名ログイン許可を有効にする必要がある場合もあります。あなたがUIDを取得するように。

0
let currentUser: FIRUser = (FIRAuth.auth()?.currentUser)! 
let navVc = segue.destinationViewController as! UINavigationController // 1 
let chatVc = navVc.viewControllers.first as! ChatViewController // 2 
chatVc.senderId = currentUser.uid // 3 
chatVc.senderDisplayName = "" // 4 

この

を試してみてください