2012-05-23 4 views
2

나는 현재 상태/온도에 기초하여 착용 한 것을 배우는 날씨 앱을 작성하여 외부에서 착용해야 할 것을 알려줍니다. 몇 가지 간단한 데이터를 수집하고 장치에 저장하고 있습니다. 내가 수집하고 있습니다 :간단한 iOS 앱의 데이터 저장 방법은 무엇입니까?

  • 날짜/시간
  • 날씨 온도
  • 날씨에
  • 6 INT 필드 :
    • 헤드
    • 가슴
    • 다리
    • F EET
    • 액세서리

나는 사용자가 일반적으로 착용을 예측하기 위해 6 개 INT 필드에있는 값의 평균을 얻기 위해 현재 온도/조건에 따라 데이터를 쿼리합니다.

저는 이것을 iPhone에서만 유지하고 있습니다. 무엇이 좋은 클라이언트 측 데이터 저장 방법이 될까요? 쿼리가 너무 강하지는 않지만 유형 및 범위를 쿼리해야합니다.

이전에 핵심 데이터를 사용하지 않았습니다. MySQL에 익숙하지만 SQLite는 사용하지 않았습니다. 다시 말하지만,이 클라이언트 쪽을 유지하고 단순성/속도를 위해 데이터베이스를 사용하지 않습니다. 나는 get-in/get-out 앱을 목표로하고 있습니다.

+1

NSUserDefaults (.plist 파일을 통해)? 상당히 간단한 데이터 항목처럼 보이므로 IMHO Core Data 또는 유사 항목이 과도 할 수도 있습니다. – Luke

+0

나는 볼 가치가있는 .plist를 고려하지 않았습니다. 나는 이것이 단순한 작업을 위해 Core Data를 배우면서 과잉이라고 생각했다. 그러나, 나는 단지 몇 가지 데이터 포인트에 대해서 전체 .plist를로드해야 할 것이다. 그러나, NSUserDefaults를 피하기를 원한다. 왜냐하면, 나의 의견으로는, * user defaults *를 제외하고 물건을 저장하는 것이 나쁜 디자인이기 때문이다. – rnystrom

+2

NSKeyedArchiver는 개체의 임의 그래프를 파일에 저장할 수 있습니다. 그것은 매우 편리 합니다만, 당신은 모든 쿼리를 직접 써야합니다 (배열, 일치하는 키 등을 통해 검색). 글 머리 기호를 물고 핵심 데이터를 배우면 어쨌든 그렇게합니다. – Rayfleck

답변

2

Core Data 또는 SQLite를 사용하는 것이 좋습니다. 당신의 권리, 이것은 많은 데이터가 저장되는 것이 아닙니다. 해당 애플리케이션이 성공하고 개념을 확장하고 싶다면 어떻게해야할까요? 예를 들어

:

(1) 당신은 더 많은 데이터

를 저장할

(2) 아마 서버

(3) 데이터의 유형 저장 변환 가능한

에 데이터를 동기화

귀하의 질문에 QUERY에 대한 언급도 있습니다. 저의 답변은 바로 저에게 있습니다. Core Data를 사용하면이 모든 작업을 훨씬 쉽게 처리 할 수 ​​있습니다. 학습 곡선이 있지만이 프레임 워크를 학습하면 향후 프로젝트에 도움이됩니다.

프로젝트에 대한 행운을 빕니다.

+0

나는 레이 웬델 리치 (Ray Wenderlich)의 튜토리얼 두 개를 만들고 공정한 방법을보아야 할 것이다. 너무 힘들다면 필립 (Philip)이 제안한 것처럼 SQLite로 갈 수도 있습니다. 편집 : 또한 애플 리케이션을 작성하는 회사에서 내 경력을 시작 해요, 그래서뿐만 아니라 코어 데이터를 가질 수 있습니다. 감사! – rnystrom

1

이전 포스터는 Coreite over SQLite를 권장합니다. 이 두 가지 대안 중 하나를 제안하는 것이 맞지만 MySQL에 익숙하고 get-in/get-out 응용 프로그램을 찾고 있다면 SQLite를 사용하는 것이 좋습니다.

핵심 데이터는 훌륭한 프레임 워크이지만 사양 및 이전 경험을 고려해 볼 가치가없는 학습 곡선이 있습니다. SQLite는 간단하고 빠르며 클라이언트 쪽입니다. 또한, 쿼리는 MySQL과 전혀 다르게 보일 것입니다.

다른 포스터는 NSUserDefaults 또는 NSKeyedArchiver를 통해 직렬화하는 것을 언급합니다. 그들은 직렬화를 단순하게 만들지 만 NSPredicate를 사용하여 자신의 쿼리 코드를 롤링하게됩니다.그렇게 어렵지는 않지만, 또 다시, 그것은 보람있는 반면 다른 시간 동안 더 잘 저장되는 새로운 기술 일 수 있습니다. 관심사의 더 많은 것은 당신의 app가 많은 양의 데이터를 빨리 사용하기 시작하면 잘 확장되지 않을 것이라는 점입니다.

규모가 더 일반적으로 커지면 앱이 크게 성공할 수 있으므로 걱정할 필요가 없습니다. 필요한 경우 언제든지 리팩토링하고 확장 할 수 있습니다.

+0

확장한다고 가정하면 SQLite는 서버 데이터베이스와 어떻게 동기화합니까? MySQL로 작성된 데이터베이스를 사용하고 기본적으로 데이터를 전송합니까? 아니면 SQLite에서 서버에 데이터베이스를 가질 수 있습니까? – rnystrom

+0

나는 서버 측에서 SQLite보다는 MySQL 또는 PostgreSQL을 보는 것이 더 일반적이라고 생각합니다. 어쨌든 코어 데이터 또는 다른 형식을 사용하는 경우에도 JSON, XML 또는 여러 가지 POST 변수로 데이터를 serialize하고 저장 용 서버로 보내야합니다. 정보를 얻는 것과 같습니다. 즉, SQLite 저장소 전체를 서버에 보내지 않을 것입니다. 데이터를 앞뒤로 보내면 꽤 간단합니다. 우수한 AFNetworking 및 JSON 키트는 모든 방식의 HTTP 메소드를 처리하고 NSDictionary와 같은 원시 코코아 객체를 처리 할 수 ​​있습니다. – Philip

관련 문제