ОК, если предположить, что first, last и personId не равны нулю.,.
Вы говорите, что в отладчике это выглядит неправильно - как вы имеете в виду?
Что произойдет, если вы сделаете это - вы можете скопировать консоль в свой вопрос:
// Debug the person id
NSLog(@"%i", [personId intValue]);
// Check that it's in the array OK
NSLog(@"%i", [personAdd objectAtIndex:2]);
// Add it to your stuff
[self.myContactDataSource addPerson:personAdd];
// Check that the array is still OK
NSLog(@"%i", [[myContactDataSource objectAtIndex:2] intValue]);
Я знаю, что это не совсем ответ, но это может пролить свет на проблему!