나는 성경 응용 프로그램을하고 있는데, 나는 기본 DB 데이터베이스 인 영어 DB.Sqlite를 가지고 있으며, INAPP를 통해 응용 프로그램 내에서 다른 언어 데이터베이스를 다운로드 할 수있다. 다운로드 방법은 알고 있지만, 내 문제는 사용자가 다운로드 할 때이다. 히브리어 언어 데이터베이스, app.if에 10 개의 언어 옵션 버튼이 있습니다. 사용자가 히브리어 데이터베이스를 다운로드하면 히브리어 버튼이 활성화되고 버튼을 탭하여 테이블 뷰에서 볼 수 있지만 히브리어 버튼을 누르면 응용 프로그램 데이터베이스 사용자가 원하는대로, 즉 사용자가 힌디어 데이터베이스 버튼을 탭하면 사용자가 힌디어 데이터베이스를 다운로드 한 경우 테이블 뷰에서 볼 필요가 있고, 사용자는 그 데이터베이스를 전환 할 필요가있는 히브리어 버튼을 탭합니다 히브리어 및로드 hebrew 데이터베이스 tableview.I가 수행 한로드 된 데이터베이스와 함께 이것을 다시로드하는 방법 영어 데이터베이스의 로딩? 영어 데이터베이스를 보여주는 내 코드 데이터베이스 파일을 다운로드하여 응용 프로그램에서 읽는 방법은 무엇입니까?
#import <sqlite3.h>
#define DbName @"BibleDB.sqlite"
@interface DbHandler : NSObject {
}
+(void)createEditableCopyOfDatabaseIfNeeded;
+(NSString *) dataFilePath:(NSString *)path;
// Malayalam Version
+(int)mNumberOfChaptersInBook:(NSString *)book;
+(int)mNumberOfVerseForChapter:(NSString *)chapter andBook:(NSString *)book;
+(NSMutableArray *)mVerseForChapter:(NSString *)chapterNo OfBook:(NSString *)book;
+(NSString *)mVerseForVerseNo:(NSString *)verseNo OfChapter:(NSString *)chapterNo OfBook:(NSString *)book;
//+(NSString *)mVerseForVerseNo:(NSString *)verseNo OfChapter:(NSString *)chapterNo OfBook:(NSString *)book FromDB:(sqlite3 *)database;
// English Version
//+(int)eNumberOfChaptersInBook:(NSString *)book;
+(NSMutableArray *)eVerseForChapter:(NSString *)chapterNo OfBook:(NSString *)book;
+(NSMutableArray *)verseForSearchTag:(NSString *)searchTag;
//Hindi version
+(NSMutableArray *)hVerseForChapter:(NSString *)chapterNo OfBook:(NSString *)book;
+(int)hNumberOfChaptersInBook:(NSString *)book;
//+(NSMutableArray *)hverseForSearchTag:(NSString *)searchTag;
//Bookmarks
+(void)createBookmark:(NSString *)text :(NSString *)book :(NSString *)chapter :(NSString *)verse;
+(NSMutableArray *)getBookmarks;
+(bool)deleteBookmark:(NSString *)book :(NSString *)chapter :(NSString *)verse;
@end
in.h하는 .m
#pragma mark Englisg DB
+(NSMutableArray *)eVerseForChapter:(NSString *)chapterNo OfBook:(NSString *)book
{
NSMutableArray * result = [[NSMutableArray alloc] init];
sqlite3 *database;
NSString *dbpath;
dbpath = [DbHandler dataFilePath:DbName];
if (sqlite3_open([dbpath UTF8String], &database) == SQLITE_OK)
{
NSString *selectSql = [NSString stringWithFormat:@"SELECT [text] FROM english where book = '%@' and chapterNo = '%@'",book,chapterNo];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [selectSql cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
[result addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]] ;
}
sqlite3_finalize(statement);
}
else
{
NSLog(@"Sql Preparing Error");
}
sqlite3_close(database);
}
else
{
NSLog(@"Database not opening");
}
return result;
}
+(NSMutableArray *)verseForSearchTag:(NSString *)searchTag
{
NSMutableArray * result = [[NSMutableArray alloc] init];
sqlite3 *database;
NSString *dbpath;
dbpath = [DbHandler dataFilePath:DbName];
if (sqlite3_open([dbpath UTF8String], &database) == SQLITE_OK)
{
NSString *selectSql = [NSString stringWithFormat:@"SELECT [text],book,chapterNo,verseNumber FROM english where [text] like '%%%@%%%' limit 0,500",searchTag];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [selectSql cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
[result addObject:[[NSMutableDictionary alloc] init]] ;
[[result lastObject] setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)] forKey:@"text"];
[[result lastObject] setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)] forKey:@"book"];
[[result lastObject] setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)] forKey:@"chapter"];
[[result lastObject] setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)] forKey:@"verse"];
}
sqlite3_finalize(statement);
}
else
{
NSLog(@"Sql Preparing Error");
}
sqlite3_close(database);
}
else
{
NSLog(@"Database not opening");
}
return result;
}
+(int)hNumberOfChaptersInBook:(NSString *)book
{
sqlite3 *database;
NSString *dbpath;
dbpath = [DbHandler dataFilePath:DbName];
if (sqlite3_open([dbpath UTF8String], &database) == SQLITE_OK)
{
NSString *selectSql = [NSString stringWithFormat:@"SELECT count(*) FROM hindi where book = '%@'",book];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [selectSql cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
return [[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)] intValue];
}
}
else
{
NSLog(@"Sql Preparing Error");
}
}
else
{
NSLog(@"Database not opening");
}
return 0;
}
#pragma mark DB Setup Functions
+(void)createEditableCopyOfDatabaseIfNeeded {
// First, test for existence.
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:DbName];
success = [fileManager fileExistsAtPath:writableDBPath];
if (success) {
NSLog(@"Database file already exist, so returning...");
return;
}
NSLog(@"CREATING A NEW COPY OF THE DATABASE...");
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:DbName];
//[fileManager removeItemAtPath:writableDBPath error:nil];
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
//Some serious problem...
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
+(NSString *) dataFilePath:(NSString *)path
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:path];
}
@end
이며,이 표시를위한이 내있는 tableview 코드는이 일을 도와주세요
static NSString *CellIdentifier = @"Cell";
readCell *cell = (readCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"readCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
cell.malayalamVerse.hidden = YES;
cell.malayalamVerse.backgroundColor = [UIColor clearColor];
// self.table.tableFooterView = refreshFooterView;
//self.table.tableFooterView.userInteractionEnabled = YES;
}
if(tableView == table)
{
UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];
// myBackView.backgroundColor = [UIColor colorWithRed:250.0 green:248.0 blue:192.0 alpha:1.0];
[myBackView setBackgroundColor:[UIColor clearColor]];
cell.selectedBackgroundView = myBackView;
[myBackView release];
cell.textLabel.highlightedTextColor = [UIColor colorWithRed:1 green:1 blue:0.75 alpha:1];
table.backgroundColor = [UIColor clearColor];
table.separatorColor = [UIColor clearColor];
cell.chapterAndVerse.text = [NSString stringWithFormat:@"%@.%d ",delegate.selectedChapter, indexPath.row+1];
cell.chapterAndVerse.backgroundColor= [UIColor whiteColor];
cell.chapterAndVerse.textColor = [UIColor brownColor];
cell.chapterAndVerse.font = [UIFont fontWithName:@"Georgia" size:14.0];
cell.chapterAndVerse.frame=CGRectMake(33, 6, 30.0, 12.0);
cell.textLabel.text = [NSString stringWithFormat:@" %@",[delegate.allSelectedVerseEnglish objectAtIndex:indexPath.row]];
cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:18];
cell.textLabel.textColor = [UIColor darkGrayColor];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.backgroundColor = [UIColor clearColor];
}
을 DB , 누군가가 이것에 대한 아이디어가 있다면 나와 공유하십시오. 감사합니다.
제발 도와주세요. 간단한 질문이 아닙니다. 누구나 아이디어를 공유해 주시면 – ICoder