我的项目崩溃在RealmUtil.swift第16行,代码如下所示。这是否意味着王国返回为零?我当时很困惑。希望得到你的帮助。太好了谢谢!
RealmUtil.swift
15 let realm = try! Realm()
16 try! realm.write {
17 write()
18 }详细记录如下。它显示在firebase中,我无法在调试模式下调试它。
Crashed: com.apple.main-thread
0 libsystem_kernel.dylib 0x1978b5ec4 __pthread_kill + 8
1 libsystem_pthread.dylib 0x1977d5724 pthread_kill$VARIANT$armv81 + 216
2 libsystem_c.dylib 0x197725844 abort + 100
3 Realm 0x1041bfe30 please_report_this_error_to_help_at_realm_dot_io + 10
4 Realm 0x1041c00fc realm::util::terminate_internal(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) + 264
5 Realm 0x1041c0270 realm::util::terminate(char const*, char const*, long, std::initializer_list<realm::util::Printable>&&) + 324
6 Realm 0x103eed0f4 realm::_impl::RealmCoordinator::advance_schema_cache(unsigned long long, unsigned long long) + 182
7 Realm 0x103fc0c2c realm::Realm::cache_new_schema() + 100
8 Realm 0x103fc1510 realm::Realm::begin_transaction() + 176
9 Realm 0x103f900e0 -[RLMRealm beginWriteTransaction] + 20
10 RealmSwift 0x10477004c $s10RealmSwift0A0V5write16withoutNotifying_xSaySo20RLMNotificationTokenCG_xyKXEtKlF + 136
11 Ig Followers 0x102da91c8 specialized static HomeViewModel.engagementAnalysis(media:) + 16 (RealmUtil.swift:16)
12 Ig Followers 0x102da9408 specialized static HomeViewModel.analysisLTS() + 4301886472 (<compiler-generated>:4301886472)
13 Ig Followers 0x102c84b2c closure #1 in closure #1 in HomeVC.getLTSData() + 4300688172 (<compiler-generated>:4300688172)
14 Ig Followers 0x102dab644 partial apply for closure #1 in closure #1 in static HomeViewModel.getLTSData2(pk:completeHandler:) + 4301895236 (<compiler-generated>:4301895236)
15 Ig Followers 0x102c9f454 thunk for @escaping @callee_guaranteed () -> () + 4300797012 (<compiler-generated>:4300797012)添加了关于这个问题的细节函数的图像。看见
发布于 2020-04-16 17:19:50
问题是如何处理选拔赛。问题就在这里
let lts = HVMlts()!当代码强制打开返回值时,保证HVMlts永远不会为零。
但是,如果您查看相关的函数,它实际上可以是return nil。
if results.count == 1 {
return results[0]
} else {
return nil
}如果领域筛选器
let results = realm.objects(HomeViewModel.self)...返回两个或多个结果,则该函数将返回零。同样,如果没有结果,它也将返回零。
在任何一种情况下,该零都会导致代码崩溃。
最好安全地展开选项或使用零合并运算符提供默认值。我看到您已经在代码的其他部分中这样做了,但是这里还有两个选项。
if let lts = HVMlts() then {
//do something with lts as it's not nil
}或
guard let lts = HVMlts() else { return }
//do something with ltshttps://stackoverflow.com/questions/61234026
复制相似问题