'파일 읽기'에 해당되는 글 1건

  1. 2012.08.23 iOS개발하기 #46. 파일 입출력. NSFileManager (28)

오늘의 주제

1. 딕셔너리 형태의 객체를 파일로 쓰고 읽기


마흔 여섯 번째 시간입니다.^^

지난 두 포스팅에서는 모양새를 바꿔보는 것을 해 보았어요~
사실상 명목이었지 어쨌든 개념적인 요소가 많았지요 ㅎㅎㅎ

이번에는 파일을 읽고 써 보는 시간을 가져보도록해요 ㅎㅎ

매번 어플리케이션이 종료되면 모든것이 다 날아가 버리면 아쉽잖아요.
뭔가 저장하고 다시 가져올 수 있는 방법, 간단한 파일 쓰고 읽기를 해 보도록 합시다~

자, 그럼 시작해 볼까요?ㅎㅎ


# 파일 입출력

자, 우선 오늘도 프로젝트 하나를 만듭니다.

지난 두 프로젝트와는 달리 이 프로젝트는 3개 ~ 4개 포스팅 동안 사용하게 될 것 같네용 호호


늘 그래왔듯이 싱글 뷰 어플리케이션으로 만들어 줍니다 ㅎㅎ
 


이름은 YGFileManagement


첫 실행화면 ViewController.xib로 들어와서 이렇코롬 만들어 줍니다.
이제 이 정도는 설명하지 않아도 되리라 굳게 믿습니다 ㅋㅋㅋ 


딕셔너리 형태의 객체를 파일로 쓰고 읽는다고 했을 때 의아해 하신분들이 분명 계셨을 겁니다.

스쳐지나와서 생각 못하셨다구요?ㅎㅎㅎ

자, 우리는 파일을 plist형태로 쓰고 읽어주는 작업을 할거예요. plist...??? 어디서 들어본거 같은데???

그쵸?ㅋㅋㅋ Supporting Files에 AppName-info.plist라는 파일을 보실 수 있을거예요.

눌러보세용 ㅎㅎㅎ

그 안에 어떤식으로 구성이 되어있나요?

Key - Value 형식...!! 어!!!?? 딕셔너리네?

네~ 딕셔너리 형식으로 구성이 되어있는 것을 볼 수 있습니다.

그래서 우리는 딕셔너리를 plist로 저장하고 불러오는 것을 해 보도록 하겠습니다 ㅎㅎ


일단 저장하는 메소드를 먼저 작성해 보도록 하지요.

아까 버튼에 연결해 둔 메소드가 있지요? saveStringToFile 메소드를 정성스레 작성해 줍니다 ㅎㅎㅎ 

inputTextField에 입력해준 텍스트를 딕셔너리에 넣어서 파일로 저장하는거예요 ㅎㅎ

주로 간단한 내용들을 저장해 줄 때 Document 디렉토리 안에 저장해 줍니다. 어플리케이션 옵션을 주고 적절한 처리를 하면 iTunes에서 도큐먼트 폴더로 파일을 넣고 빼고 할 수 있는 곳이기도 하죠.

이제 이렇게 주석과 글들로 설명이 되어있는데, 이해가 안가거나 조금 더 알고싶은 메소드가 있다면 개발문서를 한 번 찾아보는 센스! 필요하겠죠?ㅎ 



자, 그리고 이번에는 파일에서 딕셔너리를 불러와서 outputLabel에 텍스트를 세팅 해 주는 메소드 입니다.


자, 그리고 실행! 우선 저장하기 전에 로드해 볼까요? 역시나 파일이 없으니 실패!!


하지만 저장하고,


다시 로드하면 이렇게 라벨에 로드가 되는군요 ㅎㅎㅎ


또 다른 글로 바꿔서 저장해보고~


다시 로드해도 잘 되네용 ㅎㅎㅎ


앱을 종료했다가 다시 실행해서 로드도 해 보세요~ 아주 잘 됩니다 ㅎㅎㅎ

물론 앱을 삭제했다가 다시 실행하면 도큐먼트 폴더 내의 데이터도 지워졌기 때문에 로드가 되지 않습니다. 


오늘은 이렇게 간단히 도큐먼트 폴더에 plist파일을 저장하고 불러오는 놀이를 해 보았습니다 ㅋㅋ

어떠셨나요? 괜찮았나요?ㅎ

물론 바이너리 데이터(예를들어 이미지 등)을 읽고 쓸 수 있는 방법도 있는데, 요청하시면 진행하도록 할게요 ㅎ

이런 간단한 예제 외에도 더 크고 복잡한 데이터들을 저장하고 불러오는 방법도 존재합니다.

역시나 배우면 배울수록 어려워지는..ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

뭐 여튼 오늘은 여기까지~


by yagom

facebook : http://fb.yagom.net

twitter : http://twitter.yagom.net ( @yagomsoft )

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 손가락 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 




Posted by yagom

댓글을 달아 주세요

  1. 으아~!! 2012.08.24 11:29  댓글주소  수정/삭제  댓글쓰기

    야곰님 위 내용과는 관계 없지만 질문이 있습니다~~!!!!
    연속된 이미지와 텍스트파일을 각각 uiview와 라벨에 쌍을 맞춰서 출력하고 싶습니다
    시간인터벌을 갖게 해서 출력하기 위해 nstimer를 사용하려고 하는데요. 구문을 어떻게 사용해야 할지 모르겠어요.ㅜㅜ
    [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(loadImageAndText) userInfo:nil repeats:YES];
    이렇게만 선언했구요. 셀렉터에서 쌍을 맞춰 출력하는 구문을 만들고 싶은데 각각 재생하는건 어렵지 않은데 쌍맞춰 하는건 .ㅜㅜ
    그리고 텍스트연속 출력은 어떻게 하나요? 이미지와 맞춰 무한 재생으로 만들었다가 버튼클릭하면 멈추게 만들고 싶은데
    구문을 어떻게 짜야하나 모르겠어요.아 빨리 알려주셨음 좋겠어요.ㅠㅠ

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.08.24 14:09 신고  댓글주소  수정/삭제

      안녕하세요 으아~!! 님 ㅋ

      음... 배열 두 개를 이용하여 자료를 저장해 두었다가 동시에 두 배열에서 같은 인덱스의 자료를 뽑아오면 되지 않을까요 ^^?

      사실 어떤 것을 원하시는지 잘 몰라서 애매하긴 하지만,

      일단 NSTimer *myTimer = [NSTimer scheduled ...

      해 주시고

      버튼을 누르면 [myTimer invalidate]; 해 주시면 멈출거예요~

  2. chosamong 2012.08.26 11:28  댓글주소  수정/삭제  댓글쓰기

    다음 버전 기대합니다. 초롱초롱
    바이너리 데이타 입출력,
    예외 처리
    파일 경로 변경 등등

    파일 입출력 넘 어려워요. ㅜ.ㅜ

    저도 낼 부터는 출근이라 폭풍 댓글 호응은 좀 더뎌질수도~
    하지만 열렬히 응원합니다.
    야곰님 파이팅 ^^;;

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.08.27 01:07 신고  댓글주소  수정/삭제

      초롱초롱 *_*ㅎㅎ
      이제 며칠 지나면 저도 한달간 덧글을 달수가 없네요 ㅎㅎㅎ
      열심히 하시는 chosamong님도 화이팅입니다 :)

  3. 컴맹 2012.09.16 05:12  댓글주소  수정/삭제  댓글쓰기

    드디어 데이타 저장/로드도 배웠습니다.ㅎㅎ
    오늘도 좋은 강좌 잘보고 갑니다.~
    감사합니다.^^

  4. 낭만떡대 2012.11.21 17:09  댓글주소  수정/삭제  댓글쓰기

    와우!!! 간단한 데이터 저장 방법이 이런 방법이 있었군요!
    간단한 저장은 기본으로 영구 저장되는 딕셔너리 하나 있잔아요.. ㅠㅠ 기억이 안나네
    userinfo 어쩌구 하는거.. 그걸로 했었는데 이렇게 파일로 내리는것도 간단하고 좋네요!
    좋은거 얻어 갑니다.
    (맨날 맥부기에서 강좌 보다가 이쪽으러 넘어옴 ㅋㅋ 여기가 크고 좋네요 ㅎㅎ)

    이미지 데이터를 저장하는 방법도... (제가 한번 해보겠습니다! ㅎㅎ;)
    뭔가 느낌상 그냥 data로 쓰고 data로 읽어 오면 될것 같은 *.* ㅋㅋ)

    추천 꾹~!

  5. 한소쿠리더하기 2013.02.02 00:50  댓글주소  수정/삭제  댓글쓰기

    파일주소에 덧붙일 때...

    /string.plist

    에서 / 는 있어도 되는 건가요?

    안되서 구글링을 하다가 writeToFile:atomically 로 보다보니 다른 예제에는 /가 없어서 빼고 하니까 되네요. ㅎㅎ

    다른 분들은 말씀이 없으신 걸로 봐서는 제가 뭔가를 잘못했다거나 다른 분들에게는 저정도는 너무 허접한 거라서 그냥 넘어가셨다던가...일까요? ㅎㅎ

    진짜 C 프로그래밍도 한개도 모르는 상태에서 시작해서 삽질하다가 야곰님 강의 보고 많이 알아가고 있습니다. 감사합니다. ^^

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.02.04 10:10 신고  댓글주소  수정/삭제

      stringByAppendingPathComponent:

      메소드를 사용하시면 /를 입력해도 하지 않아도 상관 없습니다 :)

    • 한소쿠리더하기 2013.02.04 11:21  댓글주소  수정/삭제

      stringByAppendingFormat을 썼는데 /를 쓰면 저장이 안되고 /를 안 써야 저장이 되네요;;;

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.02.05 07:56 신고  댓글주소  수정/삭제

      네, 제가 저 소스를 작성할 때 무슨생각으로 그랬는지는 모르겠지만;;
      파일 경로 등을 만들어 줄 때에는
      stringByAppendingFormat 보다는 stringByAppendingPathComponent을 사용하는 것이 바람직합니다... ^^;
      더 자세한 사항은 도큐먼트를 참고하세요~

    • wowjam 2013.07.17 15:40  댓글주소  수정/삭제

      너무 오래된 리플이지만... 한소쿠리더하기님이 말씀하신 문제의 원인을 알았습니다.
      NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
      이 부분에서 NSDocumentDirectory 대신에 NSDocumentationDirectory를 쓰셨던것 같네요.
      혹시 비슷한 문제 있으신 다른 분들도 참고하세요~

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.07.17 23:09 신고  댓글주소  수정/삭제

      정말 유익한 덧글 남겨주셔서 고맙습니다 :)

  6. Royster 2013.07.17 21:39  댓글주소  수정/삭제  댓글쓰기

    오늘도 정말 유익한 시간이었습니다^^

    이미지 및 텍스트를 이용하여 일기 작성 및 저장, 불러오기를
    구현하는 예제 강의 올려주실수 있으실까요~?

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.07.17 23:10 신고  댓글주소  수정/삭제

      ㅎㅎ 좋은 예제네요~!
      그런데 제가 지금은 그럴 여력이 부족할 것 같습니다 ㅠ_ㅠ
      이 포스팅을 응용해 보시면 간단한 것은 할 수 있을 거예요..
      죄송합니다 ㅠ

  7. Royster 2013.07.18 01:06  댓글주소  수정/삭제  댓글쓰기

    아 아닙니다 죄송하실게 뭐있나요~ ㅎㅎ
    응용해서 제가 직접 시도해보겠습니다^^
    앞으로도 좋은 예제 많이 올려주세요 ~~~

  8. zeroBear 2013.09.21 14:31  댓글주소  수정/삭제  댓글쓰기

    안녕하세요,
    항상 강좌 잘 보고 있습니다.
    이번 강좌에서 키보드 입력이 나왔는데요, 아무래도 키보드가 내려 가질 않아서 뭔가 아쉽더라구요.
    혼자 찾아 찾아 해결은 했는데, first responder의 개념이 잘 이해가 되지 않습니다.
    나중에 first responder에 대한 강좌를 써 주실 수 있으신가요?

    아마 이 블로그에서 강좌를 보는 다른 분들도 도움이 될 것 같아요 ^____^

  9. 루드릭 2013.11.12 00:29  댓글주소  수정/삭제  댓글쓰기

    강좌 잘 보고 있습니다. ㅎㅎ

    맥부기 까페에서 검색시에도 이상하게 야곰님이랑 겹치는 강좌들이 있길래

    누가 떼다 올리시는건가 했는데 작성자 아이디가 야곰... ㅋㅋ

    직접 올리시는거였군요. ㅎ

    다름이 아니라 질문이 하나 있는데요

    textfield에 글을 적다가 다른 뷰로 넘어갔다가 다시 와도

    아까 적어놓은 텍스트들이 남아있게 하고 싶은데

    키보드를 내리면서 어딘가에 저장을 해 두고 다른 뷰 갔다가 돌아올때

    textfield에 다시 저장을 해야될것같은데 키보드를 내릴때 어떤 메소드가 실행되게 하려니까 방법을 잘 모르겠네요 ;

    키보드를 내리는 방법은 키패드 안의 리턴버튼을 누르거나 백그라운드를 터치하면 내려가도록 해 놓았습니다.

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.11.12 11:47 신고  댓글주소  수정/삭제

      이전에 보았던 화면을 새로 생성해서 돌아오면 당연히 새로운 객체이기 때문에 남아있지 않습니다.

      이전의 화면으로 돌아올 때에는 모달로 띄워줬다면 모달을 내려주어야 하고, 네비게이션 컨트롤러로 push 하셨다면 다시 pop해서 돌아오셔야 합니다. 그러면 다시 이전의 화면 그대로를 볼 수 있습니다.

      아마도 새로운 객체를 생성하여 다시 화면에 보여주는 방식을 사용하고 계시기 때문에 이전 화면 그대로를 보지 못하시는 것 같습니다.

      모달뷰와 네비게이션 컨트롤을 조금 더 살펴보시기 바랍니다 :)

  10. odong 2015.07.26 22:02  댓글주소  수정/삭제  댓글쓰기

    애플이 개발환경이 좋아 혼자 쓸 어플 만들려는데 좋은 참고가 되네요 감사합니다!
    (댓글이 무지 늦게(?) 달린 셈인데 야곰님 보실려나요? ㅋㅋ)

    • Favicon of https://blog.yagom.net BlogIcon yagom 2015.07.28 01:10 신고  댓글주소  수정/삭제

      안녕하세요 odong님!
      덧글 남겨주셔서 고맙습니다 :)
      좋은 참고가 되었다니 기쁩니다!
      종종 들러주고 글도 남겨주세요~!
      고맙습니다~! :D

  11. hjs9402 2017.02.08 13:13  댓글주소  수정/삭제  댓글쓰기

    안녕하세용 그런데 plist로 작성한 파일들은 앱을 종료했을때 다 삭제가 되나요?

  12. sususoo 2017.05.09 23:57  댓글주소  수정/삭제  댓글쓰기

    야곰님 정말 궁금한게 있습니다. 다운받은 ipa파일을 zip파일로 변환한후 압축을 풀어서 안에있는 plist파일이나 coderesources를 조금 수정해서 다시 압축해서 ifunbox를 이용해서 폰에 설치할 수 없나요?

    ipa파일을 zip파일로 변환한후 압축을 푼 아이들을 다시 압축해서 ifunbox를 이용해서 폰에 설치하기는 가능한데, payload폴더 안에있는 아이들을 조금이라도 건들면 설치가 되지 않습니다. 방법이 없는건가요?

    • Favicon of https://blog.yagom.net BlogIcon yagom 2017.05.10 12:06 신고  댓글주소  수정/삭제

      안녕하세요 sususoo님, 전혀 방법이 없는 것은 아니지만, 정상적이거나 좋은 방법은 아니기 때문에 따로 알려드리지는 않겠습니다 ^^; 도움을 드리지 못해 죄송합니다