Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 收藏<__NSCFString:>;在被枚举时发生了变异_Ios_Contacts_Addressbook_Mutated - Fatal编程技术网

Ios 收藏<__NSCFString:>;在被枚举时发生了变异

Ios 收藏<__NSCFString:>;在被枚举时发生了变异,ios,contacts,addressbook,mutated,Ios,Contacts,Addressbook,Mutated,出于某种原因,我收到了一个崩溃(如下所述)说“收集在被枚举时发生了变异”,但仅在实际设备上。它在Xcode测试设备上工作。我不完全确定这意味着什么,那么如何处理这个lldb崩溃呢 ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil); ABRecordRef pet = ABPersonCreate(); ABRecordSetValue(pet, kABPerson

出于某种原因,我收到了一个崩溃(如下所述)说“收集在被枚举时发生了变异”,但仅在实际设备上。它在Xcode测试设备上工作。我不完全确定这意味着什么,那么如何处理这个lldb崩溃呢

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
        ABRecordRef pet = ABPersonCreate();
        ABRecordSetValue(pet, kABPersonFirstNameProperty, (__bridge CFStringRef)petFirstName, nil);
        ABRecordSetValue(pet, kABPersonLastNameProperty, (__bridge CFStringRef)petLastName, nil);

        ABMutableMultiValueRef phoneNumbers = ABMultiValueCreateMutable(kABMultiStringPropertyType);
        ABMultiValueAddValueAndLabel(phoneNumbers, (__bridge CFStringRef)petPhoneNumber, kABPersonPhoneMainLabel, NULL);
        ABRecordSetValue(pet, kABPersonPhoneProperty, phoneNumbers, nil);

        ABAddressBookAddRecord(addressBookRef, pet, nil);

        NSArray *allContacts = (__bridge NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBookRef);
        for (id record in allContacts){
            ABRecordRef thisContact = (__bridge ABRecordRef)record; //*******The line below is where the crash is occurring*********   
            if (CFStringCompare(ABRecordCopyCompositeName(thisContact),
                                ABRecordCopyCompositeName(pet), 0) == kCFCompareEqualTo){
                //The contact already exists!
                //detects if duplicate

                return;
            }
        }

您正在应用程序的其他某个点更改集合。据苹果公司称 “在枚举可变集合时删除、替换或添加到可变集合的元素是不安全的”
请检查以下内容:

  • 你在应用程序中使用哪些集合,可能是 在运行上述代码时进行修改
  • 如果您需要修改任何 在遍历集合时,请在中使用建议的技术 链接文档

  • 这是确切的代码还是您试图删除dupe或类似的代码?您确定
    allContacts
    是NSArray吗?消息表明它是一个NSString。不幸的是,这正是我的Xcode项目中的代码。嗯……所以我没有分配所有联系人之类的东西?它只在实际设备上失败。它在测试设备上工作。我将把这一点补充到问题中。