2014-10-15 3 views
0

나는 fmdb (https://github.com/ccgus/fmdb)를 사용하여 sqlite에 데이터를 삽입하고 있습니다. 나는 그것이 내게 더 많은 융통성을 줄 수 있다고 느끼고 SQL에 능숙하기 때문에 Core Data를 사용하는 대신 sqlite에 직접적으로 말하고있다.ios : fmdb가 삽입 된 Sqlite는 컴퓨터를 끌 때 시뮬레이터에 지속되지 않습니다.

시뮬레이터를 사용하여 XCode5를 실행할 때주의해야 할 문제는 Mac을 껐다가 다시 켜면 내 입력 된 SQLite 데이터가 유지되지 않습니다. 테이블이 비어 있습니다. 내 Mac 외에 Apple 디바이스가 없기 때문에 실제 디바이스에서 이것을 테스트 할 수 없었습니다. 아마도 이것은 시뮬레이터의 것일 수도 있습니다. 그렇다면 내가 괜찮을 것입니다. .

여기에 나를 위해 일반적인 삽입의 :

-(BOOL)insertLocation:(BTRLocation *)location { 
NSMutableDictionary *dictionaryArgs = [NSMutableDictionary dictionary]; 
[dictionaryArgs setObject:location.address forKey:@"columnA"]; 
[dictionaryArgs setObject:location.name forKey:@"columnB"]; 

return [self.db executeUpdate:@"insert into locs (columnA, columnB) values (:columnA, :columnB)" withParameterDictionary:dictionaryArgs]; 

} 

아무것도이 작업을 수행하기 때문에 내 쿼리에 이상이 있음을 표시하지 않을 것입니다. Xcode에서 Stop 버튼을 눌러 앱을 종료하고 다시 실행하더라도 모든 데이터가 유지됩니다. 컴퓨터 종료를 통해서는 불가능합니다. NSUserDefaults가 컴퓨터 종료를 통해 지속되는 것처럼 보이기 때문에 조금 이상합니다.

도움 말?

편집 : 내가 찾은 추가 정보의 비트 : 그것은 테이블 자체를 다시 시작에 더 이상 존재하지 않는 테이블 내 데이터의 아니에요 보인다. 나는 항상 응용 프로그램 시작시이 작업을 수행 :

FMResultSet *rs = [self.db executeQuery:@"select DISTINCT tbl_name from sqlite_master where tbl_name = ?", table]; 
[rs next]; 
BOOL errors = NO; 
if([rs hasAnotherRow]) { 
    // table exists - I think -> So here we would do nothing 
    NSLog(@"locs table existed"); 
} else { 
    NSLog(@"locs table does not exist"); 

그리고 항상 컴퓨터를 다시 시작 후 응용 프로그램을 시작 처음으로 제외하는 경우 (LOCS 테이블이 존재) 안타.

+2

실제 데이터베이스 파일을 만드는 폴더는 무엇입니까? – borrrden

+0

/tmp/myapp_mydatabase.db 나는 tmp가 그것을위한 장소가 아닌 것 같아요? – user1513171

+1

아니요, 해당 폴더는 OS의 어딘지에서 삭제됩니다. 추측 하듯 ** 임시 ** 파일 용입니다. – borrrden

답변

1

/tmp에 데이터를 저장하는 것처럼 들립니다. FMDB 샘플 코드를 보지 않고 복사하여 붙여 넣기 만 한 것이 아닙니다. :)

+0

아니, 필자가 작성한 fmdb를 사용하여 수백 줄의 코드를 작성한 것은 아니지만 필자가 fmdb를 충분히 익숙하게 만들었을 때 필자가 의도 한대로 사용할 수있을 때 뭔가 놓쳤을 가능성이 큽니다. 그리고 네, /tmp/myapp_locations.db에 데이터를 저장하고 있습니다. 내가 있어야 할 곳이 아닌가? 위의 예제 코드에있는 코드는 필자의 지식을 최대한 활용하여 fmdb 샘플 코드에도 포함되어 있지 않습니다. – user1513171

+0

데이터베이스를 App Support 폴더 또는 문서에 저장하려고합니다./tmp는 재부팅 할 때 지워질 것입니다. – ccgus