数组中的 CallKit 调用块设置值不起作用

CallKit call block set values from array not working

我正在开发一个应用程序,我希望其中的功能可以阻止呼叫。如果我将静态值传递给 addBlockingEntryWithNextSequentialPhoneNumber 它是阻塞数字但是当我在 addBlockingEntryWithNextSequentialPhoneNumber 中传递数组时它不是阻塞数字。我已经在 Appdelegate 中记录了我的数组,它看起来很好。

应用代码:

 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

Handler类代码:

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

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

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

最后在调试我的扩展程序 class 之后,我发现问题是从 NSUserDefaults 向数组赋值。我们必须使用 NSUserDefaults SuiteName 保存和检索值才能与扩展 class.

交互