私は聖書のアプリケーションをやっている、私はデフォルトの聖書データベース英語DB.Sqliteを使用して、INAPPを介してアプリケーション内で別の言語のデータベースをダウンロードすることができます、私はダウンロードを行う方法を知っているが、私の問題は、ヘブライ語データベースには、ユーザーがヘブライデータベースをダウンロードしたときにapp.ifに10の言語オプションボタンがあり、ヘブライボタンが有効になり、ボタンをタップしてテーブルビューで表示できますが、ヘブライボタンをタップするとアプリケーションデータベースユーザーが望む通りに切り替える必要があります。つまり、ユーザーがヒンディー・データベースをダウンロードした場合、ユーザーがヒンディー・データベース・ボタンをタップすると、それをテーブルビューで表示する必要があります。ユーザーは、そのデータベースを切り替える必要があるヘブライ・ボタンをタップします。ヘブライ語、およびヘブライ語のデータベースをテーブルビューにロードします。私は、ダウンロードしたデータベースでこれをリロードする方法を英語データベースの読み込みを完了しましたか? 英語データベースを示すための私のコードは データベースファイルをダウンロードしてアプリケーションで読む方法を教えてください。
#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
であり、これを表示するため、この私のテーブルビューのコードは、これを行うために私を助けてください
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