2014-11-18 1 views
0

나는 매우 빡빡한 마감 기한이있는 간단한 앱을 출하해야하므로 내가 아는 것보다 핵심적인 데이터를 배울 시간이 없다. 내 응용 프로그램의 데이터를 저장할 때 NSUserDefaults을 사용해도 괜찮습니까? 사용자가 각 항목과 함께 일부 데이터가 포함 된 항목 목록이있는 체크리스트 앱과 거의 같습니다.NSUserDefaults 또는 백엔드?

필자가 Parse와 같은 서비스를 사용하는 것 이외에는 내 마지막 앱을 구축 한 덕분에 처리 할 수 ​​있습니다.

설정/환경 설정 이외의 용도로 NSUserDefaults를 사용하는 경우 Apple에서 앱을 거부합니까?

감사합니다.

+0

앱이 많은 양의 데이터를 저장해야하는 경우 저장해야하는 데이터의 양에 따라 달라지며 sqlite db에 저장해야합니다. 그렇지 않으면 NSUserDefaults로 이동하십시오. NSUserDefaults에 데이터를 저장하면 Apple에서 앱을 거부하지 않습니다. –

+0

소량의 데이터입니다. 내가 말했듯이, 5-10 개의 항목 체크리스트는 그 밖의 것입니다. 고마워! – espitia

+0

아무 래도 아무도 그 양의 데이터 (plist 파일)에 대한 적절한 해결책을 언급하지 않았습니다. 배열을 plist 파일에 작성하기 만하면됩니다. – rmaddy

답변

0

네, NSUserDefaults에 데이터를 저장할 수 있습니다. 이는 데이터를 로컬에 저장하는 빠르고 더러운 방법입니다.

FMDB를 사용하고 내 자신의 SQLite 문을 쓰는 것을 선호하지만 Core Data를 사용할 수 있습니다. 또한 NSFileManager를 사용하여 모든 것을 읽고 JSON 파일에 쓸 수 있습니다. 파스는 아마도 체크리스트 객체의리스트를 저장하는 것이 전부라면 잔인 할 것입니다. Apple's documentation에서

2

:

NSUserDefaults 클래스는 기본적으로 시스템과 상호 작용하기위한 프로그래밍 인터페이스를 제공합니다. 기본 시스템을 사용하면 응용 프로그램이 사용자의 기본 설정에 맞게 동작을 사용자 정의 할 수 있습니다. 예를 들어 사용자가 응용 프로그램이 표시하는 측정 단위 나 문서가 자동 저장되는 빈도를 결정할 수 있습니다. 응용 프로그램은 사용자의 디폴트 데이터베이스에있는 매개 변수 세트에 값을 지정하여 이러한 기본 설정을 기록합니다. 매개 변수는 시작시 응용 프로그램의 기본 상태 또는 기본적으로 작동하는 방식을 결정하는 데 일반적으로 사용되므로 기본값으로 참조됩니다.

는 [...]

값은이 값으로 변경 가능한 객체를 설정 한 경우에도, 불변 NSUserDefaults로부터 반환. 예를 들어, "MyStringDefault"의 값으로 변경 가능한 문자열을 설정하면 나중에 stringForKey:을 사용하여 검색하는 문자열은 변경되지 않습니다.

즉, 변경 가능한 응용 프로그램 데이터를 저장할 위치가 아닙니다.

최종 사용자가 체크리스트 데이터를 수정 (즉, 새 항목 추가 또는 체크리스트의 항목 텍스트 편집)하는 경우 핵심 데이터 사용 방법을 배우는 것이 좋습니다. 몇 년 동안 정말 배우고 사용하기가 매우 쉬워졌습니다.

당신이 (그들은 새로운 언어 주로 구문 변경이야 있지만) 아이폰 OS 8 스위프트에 대한 업데이트 된 무언가를 찾고 있다면 당신은 http://code.tutsplus.com/series/core-data-from-scratch--cms-653

에서 코어 데이터 자습서의 큰 시리즈를 찾을 수 있습니다, 당신을 체크 아웃 할 수 있습니다 http://www.raywenderlich.com/85578/first-core-data-app-using-swift.

1

불필요하게 NSUserDefault를 부담 시키더라도 Apple은 거부하지 않을 것입니다. 그러나 앱을 사용하는 사용자는 앱을 완전히 제거하거나 앱이 다운되거나 iPhone이 멈추는 경우 OS가 앱을 종료합니다.

NSUserDefault : 데이터에 빠르게 액세스하는 방법입니다. 앱이 휴대 전화에 설치되어있는 한 (키, 값) 페어로 저장됩니다. 일반적으로 세션 기반 소량의 데이터가 저장되어 있다고 가정합니다. 전체 데이터베이스가 아닙니다.

데이터베이스 (CoreData 또는 Sqlite) : 본 Coredata 뒤에는 개체가 서로 이야기하는 sqlite도 있습니다. Coredata를 사용하는 경우 테이블 대신 모델을 고려해야합니다.

나는 당신의 데이터가 큰 것이거나 커질 것으로 예상된다면 Coredata를 사용하는 것이 좋습니다. CoreData는 시간이 오래 걸리지 않습니다.

+0

그들은 당신이 데이터 스토리지 가이드 라인 밖에서 행동한다고 ​​생각하면 NSUserDefaults를이 방법으로 사용하는 것을 거부 할 수 있습니다. – quellish

0

지금 NSUserDefault로 이동하십시오! 신청서가 승인되면 SQlite를 확인하십시오. 이것은 다음 프로젝트에 유용 할 것입니다. 구문 분석 ... 확실하지만 데이터 량이 제한되어있는 경우 특히 과용되지 않도록하십시오. 행운을 비네!