メッセージアプリを作成しようとしましたが、sendボタンを押した後、
「Thread1: signal SIGABRT」
下記が、ファイルになります。
swift
1import UIKit 2import JSQMessagesViewController 3 4class ViewController: JSQMessagesViewController { 5 6 var messages: [JSQMessage]? 7 var incomingBubble: JSQMessagesBubbleImage! 8 var outgoingBubble: JSQMessagesBubbleImage! 9 var incomingAvatar: JSQMessagesAvatarImage! 10 var outgoingAvatar: JSQMessagesAvatarImage! 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 15 //自分のsenderId, senderDisokayNameを設定 16 self.senderId = "user1" 17 self.senderDisplayName = "hoge" 18 19 //吹き出しの設定 20 let bubbleFactory = JSQMessagesBubbleImageFactory() 21 self.incomingBubble = bubbleFactory?.incomingMessagesBubbleImage(with: UIColor.jsq_messageBubbleLightGray()) 22 self.outgoingBubble = bubbleFactory?.outgoingMessagesBubbleImage(with: UIColor.jsq_messageBubbleGreen()) 23 24 //アバターの設定 25 self.incomingAvatar = JSQMessagesAvatarImageFactory.avatarImage(with: UIImage(named: "1.jpg")!, diameter: 64) 26 self.outgoingAvatar = JSQMessagesAvatarImageFactory.avatarImage(with: UIImage(named: "0.jpg")!, diameter: 64) 27 28 29 30 //メッセージデータの配列を初期化 31 self.messages = [] 32 33 } 34 35 override func didReceiveMemoryWarning() { 36 super.didReceiveMemoryWarning() 37 // Dispose of any resources that can be recreated. 38 } 39 40 //Sendボタンが押された時に呼ばれる 41 func didPressSendButton(button: UIButton!, withMessageText text: String!, senderId: String!, senderDisplayName: String!, date: NSDate!) { 42 43 //新しいメッセージデータを追加する 44 let message = JSQMessage(senderId: senderId, displayName: senderDisplayName, text: text) 45 self.messages?.append(message!) 46 47 //メッセジの送信処理を完了する(画面上にメッセージが表示される) 48 self.finishReceivingMessage(animated: true) 49 50 //擬似的に自動でメッセージを受信 51 self.receiveAutoMessage() 52 53 } 54 55 //アイテムごとに参照するメッセージデータを返す 56 func collectionView(collectionView: JSQMessagesCollectionView!, messageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageData! { 57 return self.messages?[indexPath.item] 58 } 59 60 //アイテムごとのMessageBubble(背景)を返す 61 func collectionView(collectionView: JSQMessagesCollectionView!, messageBubbleImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageBubbleImageDataSource! { 62 let message = self.messages?[indexPath.item] 63 if message?.senderId == self.senderId { 64 return self.outgoingBubble 65 } 66 return self.incomingBubble 67 } 68 69 //アイテムごとにアバター画像を返す 70 func collectionView(collectionView: JSQMessagesCollectionView!, avatarImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageAvatarImageDataSource! { 71 let message = self.messages?[indexPath.item] 72 if message?.senderId == self.senderId { 73 return self.outgoingAvatar 74 } 75 return self.incomingAvatar 76 } 77 78 //アイテムの総数を返す 79 override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 80 return (self.messages?.count)! 81 } 82 83 //返信メッセージを受信する 84 func receiveAutoMessage() { 85 Timer.scheduledTimer(timeInterval: 1, target: self, selector: Selector(("didFinishMessageTimer:")), userInfo: nil, repeats: false) 86 } 87 88 func didFinishMessageTimer(sender: Timer) { 89 let message = JSQMessage(senderId: "user2", displayName: "underscore", text: "Hello!") 90 self.messages?.append(message!) 91 self.finishReceivingMessage(animated: true) 92 } 93 94} 95 96
なぜでしょうか?
エラーが発生しているのはどの行ですか?
回答1件
あなたの回答
tips
プレビュー