我在我的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)"
,扩展可以完美地工作并且没有显示错误但是当我使用具有多个元素的数组时出现同样的错误。
我做错了什么?提前谢谢
答案 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)