2012-04-19 2 views
1

응용 프로그램에서 사용해야하는 데이터베이스 (SQLite)를 다운로드하려고합니다. 다운로드 한 데이터를 NSData로 저장하기 전에 다운로드 한 데이터가 SQLite 데이터베이스인지 확인하고 싶습니다. 어떻게 확인할 수 있습니까? 예를 들어SQLite 데이터베이스 다운로드

: 어떻게 든 URL이 아직도있는 NSData에서 일부 데이터를 수신, 존재하지 않는 http://example.com/mydatabase.bdx로 입력하면

데이터베이스의 올바른 URLl는 http://example.com/mydatabase.db

입니다.

NSData *dbfile = [NSData dataWithContentsOfURL:[NSURL URLWithString: @"http://example.com/mydatabase.db"]]; 

파일을 저장하고 열려고 시도했는지 확인할 수 있으며 열려고하지 않는 경우 문제가 발생합니다. 그러나 정확한 데이터가 다운로드되지 않은 경우 파일을 저장할 필요없이 NSData에 체크인하고 싶습니다.

어떻게 저장하지 않고 확인할 수 있습니까?

+1

은 isEqualToString을 사용하여 URL 문자열을 비교합니다. –

+0

URL이 정확하거나 올바르지 않은 것은 아닙니다. 왜냐하면 언젠가 데이터베이스 이름이 바뀌면 여전히 NSData에서 무언가를받습니다. 올바른 파일을 다운로드 한 mydatabase.db 또는 sqlite db 경우 NSData 내용을 확인하고 싶습니다. – Anand

+0

.. 파일 이름이 올바른지 확인하십시오. 비교를위한 기초가 있어야합니다. eg.do u 파일의 확장자를 확인하고 싶습니다 (.db-> correct OR .bdx-> incorrect)? u가 파일이 맞는지 아닌지를 어떤 기본 단위로 결정할 수 있는지 알려줄 수 있다면; 그럼 내가 좀 도와 줄 수있어 ..! –

답변

1

the sqlite3 interface documentation 통해 찾고, 내가 찾을 수있는 모든는 모든 파일 이름보다는 데이터의 덩어리을 sqlite3_open() 친구입니다.

따라서 사용자 지정 sqlite3 라이브러리를 선적하기에 부족합니다. 다운로드 한 NSData을 설명대로 저장해야한다고 생각합니다. 임시 위치로 덤프 한 다음 열려고 시도합니다 (아마도 sqlite3_open()으로 잘하면 당신은 FMDB 또는 이와 유사한 것을 사용하고 있습니다.) 이것이 실패하면, 데이터가 유효하지 않다고 결론을 내리십시오.

+0

예, NSData를 저장 한 다음 파일을 열어 보겠습니다. 실패하면 올바른 파일이 다운로드되지 않았 음을 의미합니다. – Anand

1

아래 코드는 확장 프로그램을 확인하는 데 도움이됩니다.

NSString *url = @"http://example.com/mydatabase.bdx"; 
if([url hasSuffix:@".db"]) 
NSData *dbfile = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]]; 
관련 문제