Pregunta

Actualmente estoy recuperando todos los contactos de la libreta de direcciones y quiero guardar la última fecha en la que conocí a un contacto en particular.Por lo tanto, obtengo el calendario al mismo tiempo de la siguiente manera:

for (EKEvent* event in events) {
            for (EKParticipant* attende in [event attendees]) {
                ABRecordRef record = [attende ABRecordWithAddressBook:addressBook];
                if([contact.name isEqualToString:[NSString stringWithFormat:@"%@ %@", (__bridge NSString *)ABRecordCopyValue(record, kABPersonFirstNameProperty), (__bridge NSString *)ABRecordCopyValue(record, kABPersonLastNameProperty)]]){
                        contact.lastMet = [NSString stringWithFormat:@"%@",[formatter stringFromDate:event.endDate]];
                    }

            }

        }

Lamentablemente, el código falla en la línea de declaración "if" con la señal SIGSEGV, el registro de fallas indica que la falla ocurre con ABRecordCopyValue () ... ¿Alguna sugerencia de cómo solucionar este problema?

¿Fue útil?

Solución

Como no publicó el código completo, no puedo depurar el problema por mí mismo.Pero creo que la respuesta la dan ikuragames en el comentario.La causa más probable del bloqueo es, puede ser que el registro sea nulo al ejecutar el código.Depurar el código y verificar el valor de registro y kABPersonFirstNameProperty.Si tengo razón, entoncesdebería tener que asignar algún valor inicial para el registro o cambiar su código según la necesidad.Si no resuelve su problema, publique la información de depuración con una descripción un poco más detallada.

:)

Gracias ..

Otros consejos

Simplemente puede probar si el registro no es nulo al comienzo de la instrucción if.Si la prueba falla, el resto de la expresión no se evalúa.Por tanto, lo siguiente debería solucionar el problema.

for (EKEvent* event in events) {
        for (EKParticipant* attende in [event attendees]) {
            ABRecordRef record = [attende ABRecordWithAddressBook:addressBook];
            if(record && [contact.name isEqualToString:[NSString stringWithFormat:@"%@ %@", (__bridge NSString *)ABRecordCopyValue(record, kABPersonFirstNameProperty), (__bridge NSString *)ABRecordCopyValue(record, kABPersonLastNameProperty)]]){
                    contact.lastMet = [NSString stringWithFormat:@"%@",[formatter stringFromDate:event.endDate]];
                }
        }
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top