在展开CallDirectoryHandler内部的可选值时总是意外找到nil

问题描述 投票:0回答:1

我将目标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类以访问...

swift core-data callkit
1个回答
0
投票
如果打印print(entity.value(forKey: "number")),将打印nil
© www.soinside.com 2019 - 2024. All rights reserved.