来自阵列的CallKit调用块设置值不工作

问题描述:

我正在使用一个应用程序,在该应用程序中我想要一个功能来阻止调用。如果我将静态值传递给addBlockingEntryWithNextSequentialPhoneNumber它会阻塞数字,但是当我将数组传递给addBlockingEntryWithNextSequentialPhoneNumber时,它不会阻塞数字。我在Appdelegate中记录了我的数组,它看起来很好。来自阵列的CallKit调用块设置值不工作

Appdegate代码:

NSArray *sortedArr = [lockedArr sortedArrayUsingSelector:@selector(compare:)]; 

[DEFAULTS setObject:sortedArr forKey:@"SortedBlockedUsers"]; 

NSArray<NSNumber *> *blockedPhoneNumbers = [DEFAULTS objectForKey:@"SortedBlockedUsers"]; 

for (NSNumber *phoneNumber in blockedPhoneNumbers) { 
     NSLog(@"phoneNumber == %lld", (CXCallDirectoryPhoneNumber)[phoneNumber unsignedLongLongValue]); 
    } 

输出为:phoneNumber的= = 918849494978 phoneNumber的= = 919142142124

HandlerClass代码:

NSArray<NSNumber *> *blockedPhoneNumbers = [[NSUserDefaults standardUserDefaults] objectForKey:@"SortedBlockedUsers"]; 

//NSArray<NSNumber *> *blockedPhoneNumbers = @[ @918823514521, @919586112211 ]; 

for (NSNumber *phoneNumber in blockedPhoneNumbers) 
{ 
    [context addBlockingEntryWithNextSequentialPhoneNumber:(CXCallDirectoryPhoneNumber)[phoneNumber unsignedLongLongValue]]; 
} 

最后调试我的扩展类之后,我发现这个问题是将值从NSUserDefaults分配给数组。我们必须使用NSUserDefaults SuiteName与Extension类交互来保存和检索价值。