2011-02-08 1 views
0

мои цели (это для обучения цели):Как реализовать импорт/экспорт файлов в приложение?

  1. Пользователь может создавать (50% DONE)/редактировать/удалять/просматривать созданный викторина!
  2. Quiz имеет имя, desc, type, ... (DONE) и массив с такими объектами: @ «Вопрос: ответ»
  3. пользователь должен иметь возможность экспортировать/импортировать одну и более викторинов) через вложения электронной почты! однако до сих пор я пришел:

викторины класс: .h

@interface quiz : NSObject { 
     NSString *title, *description, *type ....; 
     NSArray *words; 

    } 

    @property(nonatomic,retain)NSString *title, *description, *type ... ; 
    @property(nonatomic,retain)NSArray *words; 
    @end 

Я даю всю информацию, необходимую:

quiz *newquiz = [[quiz alloc] init]; 
     newquiz.title = exName.text; 
     newquiz.description = myDesc; 
     newquiz.type = myType; 
      newquiz.array = wordsArray; 
     .... 

нормально теперь у меня есть NSObject. Теперь я не знаю, что делать? Может ли кто-нибудь объяснить мне несколько простых и простых шагов, которые я должен сделать для достижения своих целей?

мои мысли о том, что делать дальше:

  1. Мне нужно хранить NSObject локально. Возможно, writeToFile: @ "filename.obj". Я не знаю, как это реализовать!

ответ

1

Не уверен, что ваш вопрос есть, например, 10 вопросов в вашем фрагменте. Но единственное, что может быть тяжело, это импорт/экспорт материалов, так что с этим плохой поддержкой.

В зависимости от используемой системы. В распакованном сообществе вы можете получить доступ к файлам за пределами вашей песочницы ... в угнетенном мире акций iphones, вы не можете.

МЕТОД 1: Теперь давайте предположим, что вы находитесь на фондовом рынке, так как это на самом деле кажется более увлекательным решением. Я бы пошел с форматом схемы URL, так как вы хотите пройти викторину по электронной почте или по электронной почте.

, что это означает, что вы будете проходить вокруг URL, который будет запускать приложение

URL-адрес будет выглядеть примерно так:

`quizzer://question1/question2/question3 

или что-то подобное, вы можете в основном сделать это любой как вы хотите

вам нужно добавить ключ в ваш info.plist описать схему, так это пойти бы в него

<key>CFBundleURLTypes</key> 
    <array> 
     <dict> 
      <key>CFBundleURLSchemes</key> 
      <array> 
       <string>quizzer</string> 
      </array> 
     </dict> 
    </array> 

Заметим, что это может быть сделано в Xcode, я не использую Xcode больше, хотя ... Су да

Хорошо, теперь всякий раз, когда кто-то нажимает на URL, отформатированный как выше, ваше приложение будет и делегат приложения получит сообщение.

дальше, вам нужно реализовать это приложение метод делегата

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
{ 
    // Do something with the url here 
} 

там, теперь вы можете построить ж/д вы хотите от URL

МЕТОД 2: K, теперь мы можем предположим, что вы находитесь на взломанном рынке. Самый простой способ я вижу использует NSDictionary с функциями

[NSDictionary dictionaryWithContentsOfFile:(NSString *)path]; 

и

[dictionary writeToFile:(NSString *)path atomically:(BOOL)atomically]; 

Примечание, причиной взломан является частью этого, если вы хотите импортировать викторины из вложения электронной почты. Вам нужно будет узнать местоположение вложения, которое, вероятно, будет находиться за пределами вашей песочницы, а затем захватить информацию. Это то, что вы не можете сделать, если вы не взломаны.

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

Это было бы для импорта экспорта ... Я думаю, что это была основная часть вашего вопроса.

+0

WOW! вы на самом деле ответили на множество моих вопросов! это было действительно приятно! спасибо за это ColdLogic! извините, если я не был чист! Моя проблема прямо сейчас: как мне сохранить NSObject со всеми его свойствами (имя, desc, quizArray и т. Д.) Локально в один файл? так что я могу скопировать/отредактировать/удалить/экспортировать его в будущем самым простым способом. Должен ли я использовать nsdata writeToFile или NSDictiaonery или NSUserDefaults? – hafhadg3

+0

А, ок. В этом сценарии я бы использовал NSDictionary. NSData немного громоздко работать, но некоторые считают это полезным. NSUserDefaults больше зависит от предпочтений, а не от объектов, хотя это вполне возможно сделать (но, вероятно, больше проблем, чем его ценность). Итак, с NSDicitionary, вы просто настроили все свои примитивы в словаре, а затем выполните writeToFile. Затем вы можете сделать dictionaryWithcontentsOfFile и иметь то же самое, что вы написали в файле. С NSDictionary вы можете изменить путь, чтобы указать на другую викторину, что делает его очень практичным. – ColdLogic

+0

«Это то, что вы не можете сделать, если не будете взломаны». На самом деле, если вы реализуете обработку типа файлов для своего приложения (описано здесь [http://stackoverflow.com/questions/2774343/how-do-i-ocociate-file-types-with-an-iphone-application/2781290# 2781290)), приложение в электронном письме может быть обработано любым приложением на устройстве без взлома. Вложение копируется ОС в песочницу приложения, а затем путь к этой копии предоставляется в приложение. –

 Смежные вопросы

  • Нет связанных вопросов^_^