2016-04-29 11 views
0

データベースに10000+レコード以上あります。私はそれをテーブルビューにロードしたい。データベースからすべてのデータをフェッチし、テーブルビューにロードするのに3〜4秒かかります。レスポンスを増やし、データをuitableviewにロードする効率的な方法はありますか?ここ は、すべてのデータあちこちデータベースsqlite dbから大量のデータをロード

- (void)getAllData { 
    NSString * convertInttoStr = [NSString stringWithFormat:@"%d", rowNumber]; 
    // Getting the database path. 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *docsPath = [paths objectAtIndex:0]; 
    NSString *dbPath = [docsPath stringByAppendingPathComponent:@"iandroidquran_database 3.sqlite"]; 

    FMDatabase *database = [FMDatabase databaseWithPath:dbPath]; 
    [database open]; 
    NSString *sqlSelectQuery = [NSString stringWithFormat: 
           @"SELECT * FROM qSurahContent WHERE surahID=%@" , 
           convertInttoStr]; 


    // Query result 
    FMResultSet *resultsWithNameLocation = [database executeQuery:sqlSelectQuery]; 
    while([resultsWithNameLocation next]) { 
     NSString *strID = [NSString stringWithFormat:@"%d",[resultsWithNameLocation intForColumn:@"surahID"]]; 
     NSString *strName = [NSString stringWithFormat:@"%@",[resultsWithNameLocation stringForColumn:@"surahContentArabic"]]; 

     NSLog(@"surahID = %@, surahName = %@",strID, strName); 
     [surahId addObject:strID]; 
     [surahContentArabic addObject:strName]; 


    } 
    [self.tblView reloadData]; 

    [database close]; 
} 

どれ解を得るために私のコードです??

dispatch_async(dispatch_get_main_queue(), ^{ 

    [self getAllData]; 

}); 

をこのメインスレッドが高い優先順位を持ち、これまでよりも高速に実行されます:ありがとう

答えて

0

は、以下のように、メインスレッドでDBからデータを取得してください。だからこれを試してみてください。

希望します。

+0

...同じ応答時間 – salmancs43

関連する問題