2011-02-08 5 views
0

내 목표 (이 훈련의 목적이다) :앱에 파일 가져 오기/내보내기를 구현하는 방법은 무엇입니까?

  1. 사용자 (50 % 완료)/수정/삭제 /가 만든 퀴즈를 볼 만들 수 있습니다!
  2. 퀴즈에는 다음과 같은 개체가 포함 된 이름, 설명, 형식, ... (완료) 및 배열이 있습니다. "질문 : 답변"
  3. 퀴즈를 하나 이상 내보내거나 가져올 수 있어야합니다) 이메일 첨부 파일을 통해! 그러나 지금까지 내가 온 한 :

퀴즈 클래스 :

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

확인 지금 내가 NSObject의이 : .H

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

    } 

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

내가 필요로하는 모든 정보를 제공합니다. 이제 무엇을 해야할지 잘 모릅니다. 누군가 내 목표를 달성하기 위해해야하는 쉽고 깨끗한 단계로 나를 설명 할 수 있습니까? 다음에 수행 할 작업에 대한

내 생각은 :

  1. 나는 로컬 NSObject의를 저장해야합니다. 어쩌면 writeToFile : @ "filename.obj". 나는 이것을 구현하는 방법을 모른다.

답변

1

귀하의 질문에 대한 답은 실제로 10 가지 질문과 같습니다. 그러나 어려울 수있는 유일한 것은 가져 오기/내보내기 물건인데, 그렇게 나쁜 도움이됩니다.

사용중인 시스템에 따라 다릅니다. jailbroken 커뮤니티에서 샌드 박스 외부의 파일에 액세스 할 수 있습니다 ... 주식 iphones의 억압 된 세계에서, 당신은 할 수 없습니다.

방법 1 : 이제 실제로는 더 재미있는 솔루션 인 것처럼 보이므로 주식 시장에 있다고 가정 해보십시오. 이메일이나 승/이메일을 통해 퀴즈를 전달하기 때문에 URL 스키마 형식으로 갈 것입니다.

`quizzer://question1/question2/question3 

또는 이와 유사한, 당신은 기본적으로 할 수있는 그 어떤 :이 방법이 무엇인지

는 다음과 같이 보일 것입니다 귀하의 응용 프로그램

URL을 시작하는 URL을 주위에 전달할 것입니다 방법 당신은 당신이 계획을 설명하기 위해 당신의 Info.plist에 키를 추가해야하므로이이

<key>CFBundleURLTypes</key> 
    <array> 
     <dict> 
      <key>CFBundleURLSchemes</key> 
      <array> 
       <string>quizzer</string> 
      </array> 
     </dict> 
    </array> 
로 갈 것

을 원하는

참고,이 모두는 누군가가 위와 같이 포맷 된 URL을 클릭 할 때마다 이

이 좋아, 이제 앱

될 것 참, 김 ... 그래도 난 더 이상 엑스 코드를 사용하지 않는, 엑스 코드에서 할 수 있습니다 응용 프로그램 대리인이 메시지를받습니다.

다음, 당신이이 응용 프로그램의 대리자 메서드를

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

를 구현해야, 지금 당신은 당신이 URL에서 원하는/전자 w를 구축 할 수 있습니다

방법 2 : K, 지금 우리가 할 수있는 당신이 탈옥 한 시장에 있다고 가정하십시오. 내가 보는 가장 쉬운 방법은

[NSDictionary dictionaryWithContentsOfFile:(NSString *)path]; 

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

주의의 기능과 함께있는 NSDictionary을 사용하고, 탈옥 이유는 당신이 이메일 첨부 파일에서 퀴즈를 가져올 경우이의 일부입니다. 아마도 샌드 박스 외부에있는 첨부 파일의 위치를 ​​알아야하고 정보를 가져와야합니다. 이것은 jailbroken이 아니라면 할 수없는 일입니다.

파일을 응용 프로그램의 디렉토리 (서버 다운로드 또는 이와 유사한 파일)로 가져 오는 다른 방법이 있다면 jailbroken 여부와 상관없이 이러한 기능이 작업에 적합합니다.

수입 수출의 경우 ... 귀하의 질문의 주요 부분이라고 생각합니다.

+0

와우! 너는 내 질문에 많은 답변을했다. 정말 좋았어! 그 ColdLogic에 감사드립니다! 미안 내가 분명하지 않은! 내 문제는 바로 지금 : NSObject의 모든 속성 (name, desc, quizArray 등)을 하나의 파일에 로컬로 저장하는 방법은 무엇입니까? 그래서 복사/편집/삭제/내보낼 수 있습니다. nsdata writeToFile 또는 NSDictiaonery 또는 NSUserDefaults를 사용해야합니까? – hafhadg3

+0

아 좋아요. 그 시나리오에서는 NSDictionary를 사용할 것입니다. NSData는 작업하기가 약간 번거롭지만 일부는 유익하다는 것을 알게됩니다. NSUserDefaults는 객체보다는 환경 설정에 더 적합합니다. 그러나 모든 것을 수행 할 수는 있습니다 (하지만 그 가치보다 더 많은 문제가있을 수 있습니다). 따라서 NSDicitionary를 사용하면 사전에 모든 기본 요소를 설정 한 다음 writeToFile을 수행하면됩니다. 그런 다음 dictionaryWithcontentsOfFile을 수행하고 파일에 쓴 것과 똑같은 작업을 수행 할 수 있습니다. NSDictionary를 사용하면 경로를 변경하여 다른 퀴즈를 가리킬 수 있으므로 매우 실용적입니다. – ColdLogic

+0

"이것은 jailbroken이 아니라면 할 수없는 일입니다." 사실, 응용 프로그램에 대한 파일 형식 처리를 구현하면 ([여기] (http://stackoverflow.com/questions/2774343/how-do-i-associate-file-types-with-an-iphone-application/2781290# 2781290)), 전자 메일 내의 첨부 파일은 비 jailbroken 장치의 모든 응용 프로그램에서 처리 할 수 ​​있습니다. 첨부 파일은 OS에 의해 응용 프로그램의 샌드 박스에 복사되고 그 사본에 대한 경로가 응용 프로그램에 제공됩니다. –