У меня есть словарь:
var swiftBlogs:[Message] = [Message]()
Мой класс сообщений:
class Message: Object {
@objc dynamic var incoming=false
@objc dynamic var text = ""
@objc dynamic var from = ""
@objc dynamic var fromMe = 0
@objc dynamic var roomName = ""
@objc dynamic var time=0
@objc dynamic var isInfo=false
@objc dynamic var me=""
@objc dynamic var messageId=0
@objc dynamic var localId=0
@objc dynamic var isSent=1
@objc dynamic var isRibbon=0
@objc dynamic var ribbonJson = ""
@objc dynamic var isImage=0
@objc dynamic var isVoice=0
@objc dynamic var serverTime=0
}
Я обновляю статус отправленных сообщений, например:
let messageInfo:Dictionary<String,Message?> = notification.userInfo as! Dictionary<String,Message?>
let m1 = messageInfo["m"]
if let i = swiftBlogs.index(where: {$0.localId == m1!?.localId}) {
swiftBlogs[i].isSent=1
}
На самом деле это работает хорошо, но я вижу слишком много отчетов о сбоях от моих пользователей для этой строки:
if let i = swiftBlogs.index(where: {$0.localId == m1!?.localId}) {
Исключение:
2 Realm 0x10498ec08 long long (anonymous namespace)::get<long long>(RLMObjectBase*, unsigned long) + 164 (RLMObject_Private.hpp:45)
Полный журнал сбоя:
Last Exception Backtrace:
0 CoreFoundation 0x18d080518 __exceptionPreprocess + 228
1 libobjc.A.dylib 0x18c25b9f8 objc_exception_throw + 55
2 Realm 0x10498ec08 long long (anonymous namespace)::get<long long>(RLMObjectBase*, unsigned long) + 164 (RLMObject_Private.hpp:45)
3 Ribony 0x1041a4f34 ChatViewController.processIsSent(_:) + 772 (ChatViewController.swift:396)
4 Ribony 0x1041a9e8c @objc ChatViewController.processMessage(_:) + 108
5 CoreFoundation 0x18cff15bc __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 19
6 CoreFoundation 0x18cff1588 ___CFXRegistrationPost_block_invoke + 63
7 CoreFoundation 0x18cff0a7c _CFXRegistrationPost + 391
8 CoreFoundation 0x18cff0728 ___CFXNotificationPost_block_invoke + 95
9 CoreFoundation 0x18cf6a524 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1495
10 CoreFoundation 0x18cff01d8 _CFXNotificationPost + 695
11 Foundation 0x18d9d8814 -[NSNotificationCenter postNotificationName:object:userInfo:] + 67
12 Ribony 0x1041249cc closure #1 in closure #1 in ChatManager.sendMessage(_:to:anonClosed:toWeb:localId:isFirstReply:is... + 536 (ChatManager.swift:499)
13 RealmSwift 0x104de45fc Realm.write(_:) + 60 (Realm.swift:155)
14 Ribony 0x104124734 closure #1 in ChatManager.sendMessage(_:to:anonClosed:toWeb:localId:isFirstReply:isRibbon:isImage... + 512 (ChatManager.swift:495)
15 SocketIO 0x104e8dfd8 SocketIOClient.handleAck(_:data:) + 352 (SocketAckManager.swift:70)
16 SocketIO 0x104e8e7c8 SocketIOClient.handlePacket(_:) + 596 (SocketIOClient.swift:362)
17 SocketIO 0x104ea01c0 specialized SocketManager._parseEngineMessage(_:) + 704 (SocketManager.swift:401)
18 SocketIO 0x104e9f50c partial apply for closure #1 in SocketManager.engineDidClose(reason:) + 32
19 SocketIO 0x104e7339c thunk for @escaping @callee_guaranteed () -> () + 28 (<compiler-generated>:0)
20 libdispatch.dylib 0x18cac0a38 _dispatch_call_block_and_release + 23
21 libdispatch.dylib 0x18cac17d4 _dispatch_client_callout + 15
22 libdispatch.dylib 0x18ca6f004 _dispatch_main_queue_callback_4CF$VARIANT$mp + 1067
23 CoreFoundation 0x18d011ec0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 11
24 CoreFoundation 0x18d00cdf8 __CFRunLoopRun + 1923
25 CoreFoundation 0x18d00c354 CFRunLoopRunSpecific + 435
26 GraphicsServices 0x18f20c79c GSEventRunModal + 103
27 UIKitCore 0x1b95f7b68 UIApplicationMain + 211
28 Ribony 0x1040fa3a4 main + 68 (ConversationModel.swift:16)
29 libdyld.dylib 0x18cad28e0 start + 3
Где проблема?