我将目标Call Directory Extension
添加到应用中,进行了分组,在其中放置了主应用和扩展,与主应用和扩展共享了appname.xcdatamodeld
,并创建了CoreDataHandler
类以通过组和appname.sqlite
访问CoreData
然后我在主应用程序中创建了界面以添加电话号码并将其保存为Int64
格式。效果很好-已保存数字。我可以将它们放入主应用程序中,例如:
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "NumberList") do { let entries = try managedContext.fetch(fetchRequest) for item in entries { print(item.value(forKeyPath: "number") as! Int64) } } catch {}
[所有作品,已打印的号码...但在
CallDirectoryHandler
内,但与呼叫目录扩展重新加载时,我总是得到Fatal error: Unexpectedly found nil while unwrapping an Optional value
的情况完全相同。
我做错了什么?实际上,在更新到最新的Xcode和IOS版本(13.4)之前,一切正常。
private func addOrRemoveIncrementalBlockingPhoneNumbers(to context: CXCallDirectoryExtensionContext, since date: Date) { print(numbers.count) //<-- It shows numbers count properly! for entity in self.numbers { print(entity) //<-- It shows entity! let number: Int64? = entity.value(forKeyPath: "number") as? Int64 print(entity.value(forKey: "number")!) //<-- But fall here with nil, but attribute exists in main app! let isHidden: Bool? = (entity.value(forKeyPath: "is_hidden") as? Bool)! if isHidden != nil { context.addBlockingEntry(withNextSequentialPhoneNumber: number!) } else { context.removeBlockingEntry(withPhoneNumber: number!) } } }
我向应用程序添加了目标呼叫目录扩展,进行了分组,在其中放置了主应用程序和扩展名,与主应用程序和扩展名共享了appname.xcdatamodeld,并创建了CoreDataHandler类以访问...
print(entity.value(forKey: "number"))
,将打印nil
。