2010-02-01 6 views
0

내 iPhone 응용 프로그램에서 SQLite 데이터베이스를 사용하고 있습니다. 내 홈 화면에 새로 고침 버튼이 있으며 새로 고침 버튼을 클릭하면 보통 웹 서비스에서 데이터를 가져 와서 내 데이터베이스에 저장합니다. 정상적인 시나리오에서는 정상적으로 작동하지만 새로 고침 버튼을 4-5 회 클릭하면 응용 프로그램이 다운되고 응용 프로그램 로그에 "데이터베이스를 열 수 없습니다"라는 오류 메시지가 나타납니다.이 SQLLITE 오류가 발생하는 이유를 모르겠습니다. SQLite 데이터베이스에 행 수를 삽입하는 데 제한이 있습니까?데이터베이스를 열 수 없습니다. SQLite iPhone

답변

2

웹 서비스에서 데이터를 다운로드하고 데이터베이스에 기록한 다음 버튼을 자주 누르면 해당 단계가 반복되는 것처럼 들리는 것 같습니다.

앱의 아키텍처에 따라 sqlite 라이브러리에서 금지하는 다른 스레드에서 데이터베이스에 두 번 이상 쓸 수 있습니다.

일부 코드를 보지 않고도 무슨 일이 일어나는지 알 수있는 방법이 없습니다.

데이터베이스에 쓰려면 큐를 설정하고, 코코아/코코아 터치에서는 NSOperationNSOperationQueue을 사용하면 쉽게 구현할 수 있습니다. 이러한 클래스를 사용하여 데이터 다운로드 동작을 캡슐화하여 모델 객체로 파싱하고 데이터베이스에 다른 "작업"으로 작성한 다음 큐에 저장할 수 있습니다. 또 다른 작업이 아직 완료되지 않은 경우 하나의 작업이 실행되지 않도록 종속성을 설정할 수도 있습니다. 이 모든 것은 구성 가능합니다.

NSOperation을 사용하면 멀티 스레딩의 세계로 들어서고 어느 시점에서든 사용자 인터페이스를 업데이트하는 경우 UIKit는 스레드 세이프가 아니므로 기본 스레드에서 수행해야합니다.

관련 문제