[ Примечание: Мой ответ довольно подробный, потому что я не знаю вашего уровня понимания относительно комплектов приложений или структуры маленького мира вашего приложения для iPhone в изолированной среде - извините, если я расскажу о вещах, которые вы уже знаете - Я предпочитаю писать немного больше, чем слишком мало, и добавить немного почему при обсуждении как ...]
У вас есть несколько вариантов (конечно). Я предполагаю, что вы уже знакомы с .Net в некоторой степени, и что ваш вопрос больше о том, как это сделать с помощью iPhone Way.
Каждое приложение для iPhone (и вы увидите то же самое для приложений в OS X) - это «комплект», который не является исполняемым в традиционном смысле, но фактически представляет собой иерархию папок, внутри которой живет бинарный файл вашего приложения ( вместе с ресурсами, настройками и т. д.).
Из-за того, что приложения iPhone с убер-песочницей не имеют доступа, у вас нет доступа к общим папкам, которые вы обычно можете использовать при разработке рабочего стола (например, имея общую папку «Документы», которая находится под пользователем). домашняя папка, к которой имеют доступ приложения).
Вместо этого ваше приложение имеет собственную иерархию папок, которая похожа на собственный набор папок, которые обычно используются в приложениях.
Самый простой способ узнать, как выглядит папка вашего приложения на телефоне, - это посмотреть папку, которую симулятор iPhone использует для установки приложений, настроек, бла-бла-бла. На моей машине (я не помню, если это настраивается, но, вероятно, то же самое в вашей системе), вы можете попасть в папку по этому пути:
~/Library/Application Support/iPhone Simulator
Внутри этого есть папка User / Applications, которая содержит приложения, которые вы установили в симулятор. Разверните любую из этих папок, и вы увидите структуру папок, к которой ваше приложение будет иметь доступ по телефону.
Для хранения файлов, которые вы хотели бы сохранить во время сеансов приложения, папка «Документы» вашего приложения - это место. Это не единственный выбор для создания файлов, но это правильный выбор для этой работы. В дополнение к тому, что ваши файлы хранятся должным образом, их хранение в папке «Документы» также позволяет создавать резервные копии iTunes при синхронизации пользователя.
С MonoTouch вы можете получить путь к папке «Документы» вашего приложения с помощью Environment.GetFolderPath(Environment.SpecialFolder.Personal);
Если вы хотите проверить это, это очень простой код, который запишет файл с именем "out.txt" в папку документов вашего приложения. Этот код также считывает содержимое файла, чтобы показать, что он был создан - для дальнейшей проверки перейдите в папку «Приложения» симулятора, отсортируйте папки приложений по дате их изменения, просмотрите самые последние измененные файлы и загляните в его Документы. папка - вы найдете «out.txt» (вы не можете найти папку вашего приложения по имени, потому что, когда ваше приложение установлено, оно помещается в папку с именем, например «2B3CA854-FADB-4DDC-9732-0E61B3DD8D8C» "- сортировка папок по дате, когда они были изменены, укажет вам на последнее измененное приложение, которое в данном случае является приложением, содержащим следующий код):
// For this to function, don't forget "using System.IO;"
// If you're just playing around with this to see it work, place it inside
// your AppDelegate's "FinishedLaunching" method in main.cs
string path = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
string filePath = Path.Combine(path, "out.txt");
// File.WriteAllText will create a file and then write text to it. If the
// file already exists, File.WriteAllText will overwrite it.
File.WriteAllText(filePath, "Howdy, world.");
// Now we prove it worked by reading the contents of the file and then
// printing them to the console...
string text = File.ReadAllText(filePath);
Console.WriteLine(text);
Итак, единственное, что действительно относится к iPhone, - это знание, что «Environment.SpecialFolder.Personal» отображается в папку «Документы» вашего приложения. Кроме того, это .Net как обычно.
И, опять же, это, вероятно, было излишним, но я хотел ответить достаточно подробно для всех, кто его видит - надеюсь, это поможет:)