Лично, самый чистый метод, который приходит на ум, - это использовать CoreData, загружать списки по мере необходимости (читай: лениво), а затем вместо того, чтобы записывать их на диск, использовать CoreData для обработки хранилища. Вы прочтете данные обратно из управляемых объектов, и с вашей файловой системой не будет никаких проблем, пусть она позаботится об этом беспорядке для вас.