質問編集履歴

1

タイトル修正、コードの追加

2021/02/03 08:43

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- String以外のイニシャライザの設定の仕方が分かりません。
1
+ 一度は表示されますが再びロードするとUnexpectedly found nilとなりま
test CHANGED
@@ -34,11 +34,35 @@
34
34
 
35
35
 
36
36
 
37
+
38
+
39
+
40
+
41
+ ### 試したこと
42
+
43
+
44
+
45
+ as以降の部分にいろんなものを入れたり試したりしました。
46
+
47
+ 他にはinit丸々無くしてやろうとしたのですがオプショナル?の問題で上手くいきませんでした。
48
+
49
+
50
+
51
+ 用語の定義が自分の中でイマイチ理解できていない部分があり説明が上手くできません。ごめんなさい。
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
37
- ### 該当のソースコード
61
+ ### 一部動くコード
38
-
39
-
40
-
62
+
63
+
64
+
41
- ```ここに言語を入力
65
+ ```ここに言語を入力
42
66
 
43
67
  import UIKit
44
68
 
@@ -102,23 +126,23 @@
102
126
 
103
127
 
104
128
 
105
- init(dic: [String: Any]){
129
+ // init(dic: [String: Any]){
130
+
106
-
131
+ //
107
-
108
-
132
+
109
- self.sender = Sender(dic: dic)
133
+ // self.sender = Sender(dic: dic)
110
-
134
+
111
- self.messageId = dic["messageId"] as? String ?? ""
135
+ // self.messageId = dic["messageId"] as? String ?? ""
112
-
113
- self.kind = dic["kind"] as! MessageKind
136
+
114
-
115
- self.sentDate = dic["senderId"] as! Date
116
-
117
- // self.kind = dic["displayName"] as! MessageKind
137
+ // self.kind = dic["kind"] as! MessageKind
138
+
118
-
139
+ // self.sentDate = dic["senderId"] as! Date
140
+
119
-
141
+ //
142
+
120
-
143
+ //
144
+
121
- }
145
+ // }
122
146
 
123
147
 
124
148
 
@@ -128,7 +152,11 @@
128
152
 
129
153
 
130
154
 
131
- class MessageKitChatViewController: MessagesViewController, InputBarAccessoryViewDelegate, MessageInputBarDelegate{
155
+ class MessageKitChatViewController: MessagesViewController, InputBarAccessoryViewDelegate, MessageInputBarDelegate, MessagesDataSource{
156
+
157
+
158
+
159
+
132
160
 
133
161
 
134
162
 
@@ -182,6 +210,40 @@
182
210
 
183
211
 
184
212
 
213
+
214
+
215
+ // otherUser = Sender(senderId: passedId, displayName: passedDisplayName)
216
+
217
+
218
+
219
+
220
+
221
+ }
222
+
223
+
224
+
225
+
226
+
227
+ override func viewWillAppear(_ animated: Bool) {
228
+
229
+ super.viewWillAppear(animated)
230
+
231
+
232
+
233
+
234
+
235
+ loadBothUsersInfo {
236
+
237
+ self.loadMessages()
238
+
239
+ }
240
+
241
+
242
+
243
+ }
244
+
245
+ func loadBothUsersInfo(completion: @escaping () -> Void) {
246
+
185
247
  guard let currentUserId = Auth.auth().currentUser?.uid else { return }
186
248
 
187
249
  print("currentUserId")
@@ -250,13 +312,7 @@
250
312
 
251
313
  }
252
314
 
253
- // otherUser = Sender(senderId: passedId, displayName: passedDisplayName)
254
-
255
-
256
-
257
-
258
-
259
- loadMessages()
315
+ completion()
260
316
 
261
317
  }
262
318
 
@@ -282,6 +338,14 @@
282
338
 
283
339
  inputBar.inputTextView.text = nil
284
340
 
341
+ self.messagesCollectionView.reloadData()
342
+
343
+
344
+
345
+ self.messagesCollectionView.scrollToLastItem()
346
+
347
+
348
+
285
349
  }
286
350
 
287
351
  }
@@ -308,43 +372,65 @@
308
372
 
309
373
 
310
374
 
375
+
376
+
311
377
  let dic = snapshot.data()
312
378
 
313
379
 
314
380
 
315
- let kind = dic["kind"]
381
+ let kind = dic["kind"]!
316
-
382
+
317
- let senderId = dic["senderId"]
383
+ let senderId = dic["senderId"]!
318
-
384
+
319
- let sentDate = dic["sentDate"]
385
+ let sentDate = dic["sentDate"]! as! Timestamp
386
+
320
-
387
+ let convertedSentDate = sentDate.dateValue()
388
+
321
- let displayName = dic["displayName"]
389
+ let displayName = dic["displayName"]!
322
-
390
+
323
- let messageId = dic["messageId"]
391
+ let messageId = dic["messageId"]!
324
392
 
325
393
 
326
394
 
327
395
  let sender = Sender(dic: dic)
328
396
 
397
+
398
+
399
+ let dic2 = ["sender": sender, "messageId": dic["messageId"]!, "sentDate": convertedSentDate, "kind": MessageKind.text(dic["kind"] as! String)]
400
+
329
- print("'''''''''''''''")
401
+ // print("'''''''''''''''")
330
-
402
+
331
- print(sender)
403
+ // print(sender)
332
-
404
+
333
- print("'''''''''''''''")
405
+ // print("'''''''''''''''")
406
+
334
-
407
+ // print(kind)
408
+
409
+ // print(senderId)
410
+
411
+ print("dic2")
412
+
335
- print(kind)
413
+ print(dic2)
336
-
337
- print(senderId)
414
+
338
-
339
- print(sentDate)
340
-
341
- print(displayName)
415
+ print("dic2")
416
+
342
-
417
+ // print(displayName)
418
+
343
- print(messageId)
419
+ // print(messageId)
420
+
344
-
421
+ self.messages.append(MessageKitMessage(sender: sender, messageId: messageId as! String, sentDate: convertedSentDate, kind: MessageKind.text(dic["kind"] as! String)))
422
+
345
-
423
+ self.messagesCollectionView.reloadData()
424
+
346
-
425
+ // self.messagesCollectionView.scrollToLastItem()
426
+
427
+
428
+
429
+ // MessageKitMessage(sender: sender, messageId: dic["messageId"] as! String, sentDate: dic["sentDate"], kind: dic["kind"])
430
+
431
+
432
+
347
- self.messages.append(MessageKitMessage(dic: dic))
433
+ // self.messages.append(MessageKitMessage(dic: dic))
348
434
 
349
435
  print("messages")
350
436
 
@@ -352,9 +438,9 @@
352
438
 
353
439
  print("messages")
354
440
 
355
- // MessageKitMessage(sender: sender, messageId: messageId, sentDate: sentDate, kind: kind)
441
+ // MessageKitMessage(sender: sender, messageId: dic["messageId"] as! String, sentDate: sentDate as! Date, kind: kind)
356
-
357
- //
442
+
443
+
358
444
 
359
445
  // let sender = Sender(senderId: senderId!, displayName: displayName!)
360
446
 
@@ -396,6 +482,32 @@
396
482
 
397
483
 
398
484
 
485
+
486
+
487
+ func currentSender() -> SenderType {
488
+
489
+ return currentUser
490
+
491
+ }
492
+
493
+
494
+
495
+ func messageForItem(at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> MessageType {
496
+
497
+
498
+
499
+ return messages[indexPath.section]
500
+
501
+ }
502
+
503
+
504
+
505
+ func numberOfSections(in messagesCollectionView: MessagesCollectionView) -> Int {
506
+
507
+ return messages.count
508
+
509
+ }
510
+
399
511
 
400
512
 
401
513
 
@@ -406,39 +518,59 @@
406
518
 
407
519
 
408
520
 
409
-
521
+ //
410
-
522
+
411
- extension MessageKitChatViewController: MessagesDataSource{
523
+ //extension MessageKitChatViewController: MessagesDataSource{
524
+
412
-
525
+ //
526
+
413
-
527
+ //
414
-
415
-
416
-
528
+
417
- func currentSender() -> SenderType {
529
+ // func currentSender() -> SenderType {
418
-
530
+
419
- return currentUser
531
+ // return currentUser
420
-
532
+
421
- }
533
+ // }
534
+
422
-
535
+ //
423
-
424
-
536
+
425
- func messageForItem(at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> MessageType {
537
+ // func messageForItem(at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> MessageType {
538
+
426
-
539
+ // print("000000000000000")
540
+
541
+ // print(messages[indexPath.section].sentDate)
542
+
543
+ // print(messages.count)
544
+
545
+ // print("000000000000000")
546
+
427
- return messages[indexPath.section]
547
+ // return messages[indexPath.section]
428
-
548
+
429
- }
549
+ // }
550
+
430
-
551
+ //
431
-
432
-
552
+
433
- func numberOfSections(in messagesCollectionView: MessagesCollectionView) -> Int {
553
+ // func numberOfSections(in messagesCollectionView: MessagesCollectionView) -> Int {
434
-
554
+
435
- return messages.count
555
+ // return messages.count
556
+
436
-
557
+ // }
558
+
559
+ //
560
+
561
+ //
562
+
563
+ //
564
+
565
+ //
566
+
437
- }
567
+ //}
568
+
569
+
570
+
571
+
572
+
438
-
573
+ extension MessageKitChatViewController: MessagesLayoutDelegate{
439
-
440
-
441
-
442
574
 
443
575
 
444
576
 
@@ -448,9 +580,7 @@
448
580
 
449
581
 
450
582
 
451
-
452
-
453
- extension MessageKitChatViewController: MessagesLayoutDelegate{
583
+ extension MessageKitChatViewController: MessagesDisplayDelegate{
454
584
 
455
585
 
456
586
 
@@ -458,28 +588,30 @@
458
588
 
459
589
  }
460
590
 
461
-
462
-
463
- extension MessageKitChatViewController: MessagesDisplayDelegate{
464
-
465
-
466
-
467
-
468
-
469
- }
470
-
471
591
  ```
472
592
 
473
593
 
474
594
 
595
+ 上の一部動くコードはチャットルームをクリックした後しっかり動作しチャットメッセージがロードされ表示されるのですが、その後戻るボタンを押してチャットルーム一覧に戻り、同じ部屋をクリックすると
596
+
597
+
598
+
475
- ### 試した
599
+ ```こに言語を入力
600
+
476
-
601
+ Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value: file
602
+
477
-
603
+ ```
604
+
478
-
605
+ というエラーが
606
+
607
+ ```ここに言語を入力
608
+
479
- as以降の部分にいろんなものを入れたり試したりしました。
609
+ func currentSender() -> SenderType {
610
+
480
-
611
+ return currentUser
612
+
613
+
614
+
615
+ ```
616
+
481
- 他にはinit丸々無くしてやろうとしたのですオプショナル?の問題で上手くいきませんでした
617
+ のreturn currentUserに対して表示され原因分かりません。
482
-
483
-
484
-
485
- 用語の定義が自分の中でイマイチ理解できていない部分があり説明が上手くできません。ごめんなさい。