Ваш NSLog ожидает два объекта, но вы передаете ему строку 'key' и Integer.Значение Bool не является объектом, оно возвращает целочисленное значение (0 для False и 1 для True).%@
для Objective C Objects.Вместо этого используйте %d
для получения целочисленных значений, таких как логические значения C.
Измените свой оператор NSLog на:
NSLog(@"Achievement:%@ done:%d", key, [[achDict objectForKey:key] boolValue]);
В руководстве по программированию в Apple есть полезный разделМодификаторы строки