나는 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 테이블이 존재) 안타.
실제 데이터베이스 파일을 만드는 폴더는 무엇입니까? – borrrden
/tmp/myapp_mydatabase.db 나는 tmp가 그것을위한 장소가 아닌 것 같아요? – user1513171
아니요, 해당 폴더는 OS의 어딘지에서 삭제됩니다. 추측 하듯 ** 임시 ** 파일 용입니다. – borrrden