CallKit CallDirectory扩展中出错

时间:2016-11-07 07:43:53

标签: swift callkit

我在我的iOS项目中实现了callKit,我使用callDirectory扩展来阻止和识别Numbers,块部分工作正常,唯一的问题是当我尝试添加要识别的数字时:

swap_iter

当我尝试重新加载扩展程序时,它失败并显示错误:std::iter_swap

通过一些测试我发现通过用1个元素EXP:private func retrievePhoneNumbersToIdentifyAndLabels() -> (phoneNumbers: [String], labels: [String])? { // retrieve list of phone numbers to identify, and their labels interDefaults?.synchronize() if let numbers = interDefaults!.string(forKey: "ident-numbers"){ if let identities = interDefaults!.string(forKey: "ident-identities"){ let formattedNumbers = numbers.characters.split{$0 == "*"}.map(String.init) let formattedIdent = identities.characters.split{$0 == "*"}.map(String.init) return (formattedNumbers, formattedIdent) } } return ([""], [""]) } 的数组替换Error Domain=com.apple.CallKit.error.calldirectorymanager Code=3 "(null)",扩展可以完美地工作并且没有显示错误但是当我使用具有多个元素的数组时出现同样的错误。 我做错了什么?提前谢谢

3 个答案:

答案 0 :(得分:2)

我有类似的问题,但我犯的错误是错误代码4.所以我挖掘了CXErrors并发现了这个枚举。

public enum Code : Int {


        public typealias _ErrorType = CXErrorCodeCallDirectoryManagerError

        case unknown

        case noExtensionFound

        case loadingInterrupted

        case entriesOutOfOrder

        case duplicateEntries

        case maximumEntriesExceeded

        case extensionDisabled

        @available(iOS 10.3, *)
        case currentlyLoading

        @available(iOS 11.0, *)
        case unexpectedIncrementalRemoval
    }

所以基本上是unknown == Code 0,其他选项随之增加。这是您的分机在此日期之前尝试处理新数据时可以收到的完整错误列表。

答案 1 :(得分:1)

来自CallDirectory的错误代码在标题<CallKit/CXError.h>中定义,其中包括:

    CXErrorCodeCallDirectoryManagerErrorEntriesOutOfOrder = 3,

如果提供的电话号码出现故障,则会返回此特定错误。必须以数字递增的顺序提供数字。

答案 2 :(得分:0)

即使我知道我的号码订单正确,我也收到错误3。为我修复的是在CallDirectoryHandler文件中的私有函数中注释掉示例代码。

我此时只使用来电显示,但如果我也使用了阻止功能,那么,我也会删除该示例代码。

screen grab - commented out code in red