NSValues не может быть сохранено в plist (что и делает writeToFile: atomically:). Взгляните здесь на значения, которые вы можете сохранить. (NSNumber - это разновидность NSValue, которую вы можете сохранить, но другие NSValue потерпят неудачу.)
Если вы хотите сохранить свой массив с помощью NSValues, вы можете использовать архивирование вместо writeToFile: atomically :. NSArray и NSValue поддерживают архивирование, поэтому вы просто конвертируете массив в архив и сохраняете эти данные в файл. (Он также будет включать NSValues.) Код выглядит примерно так:
[NSKeyedArchiver archiveRootObject:myArray toFile:@"myPath"];
Чтобы загрузить его, просто используйте:
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithFile:@"myPath"];