¿Convertir un NSArray de objetos personalizados en un UITableView alfabéticamente seccionado con un índice?

(hmm .. título largo)

Si empiezo con un NSArray de objetos personalizados (cada objeto es una Persona) como este:

{
  surname:Allen   forename: Woody,
  surname:Baxter  forename: Stanley,
  surname:Clay    forename: Cassius
}

..etc ..

Puede ver que la matriz ya está en orden de apellido. ¿Cómo uso esa matriz para crear un UITableView con encabezados de sección A, B C, etc., así como un elemento de índice en el lado que se ejecuta verticalmente?

                                                               A
                                                               B
                                                               C

EDITAR

Supongo que lo que estoy preguntando es cómo convertir mi conjunto de objetos en una matriz de secciones, con todas las primeras letras de los apellidos, y una matriz de apellidos que quizás sea una matriz anidada como esta:

{ 
  letter: a
  {  surname:Allen   forename: Woody   }
  letter: b
  {  surname:Baxter  forename: Stanley }
  etc
} 

De hecho, quizás solo una matriz anidada servirá.

Respuestas a la pregunta(2)

Su respuesta a la pregunta