Какой смысл для первой строки в этом коде? Кажется, не имеет отношения к 3-й строке?
Вы на 100% уверены, что категория и logonUser заполнены в коде? Возможно, поместите оператор NSLog сразу после строки user.text = и убедитесь, что у них есть ожидаемые значения, потому что ваша третья строка выглядит хорошо.
Редактировать
Я бы попробовал изменить
user.text = [NSString stringWithFormat:@"In %@ by %@", category, logonUser];
до
user.text = [NSString stringWithFormat:@"In %@ by %@", @"category", @"logonUser"];
и посмотрите, выводит ли это In category by logonUser
. Потому что для меня это выглядит правильно.