2012-01-28 11 views
0

新しい更新が行われたときに自動的にdate()を挿入することにより、NSDateをsqlite(DATE形式)に格納します。 私のオブジェクトクラスには、この値を格納する(NSString *)フィールドがあります。 dbAccess(すべてのsqliteクエリメソッドを格納するクラス)では、dbからテーブルを読み込み、オブジェクトをテーブルのデータで埋めています。SqliteからNSDateを読み込む方法。シンタックスホワイトスポット。

私の問題は構文です。それを修復するには?

テーブルからデータを読み出していますし、それをオブジェクトを埋め

... 
while (sqlite3_step(statement) == SQLITE_ROW) 
{ 
    Item *item=[[Item alloc]init]; 
    NSDate *dated=(NSDate*)sqlite3_column_text(statement, 8); 

    //Converting date NSDate to NSString 
    NSDateFormatter *df = [[NSDateFormatter alloc]init]; 
     [df setDateFormat:@"yyyy-mm-dd"]; 
     NSString *date =[NSString stringWithFormat:@"%@",[df stringFromDate:dated]]; 

    //Trying to input the date into object. The receiving (dated)var is NSString 
    item.dated=(date)?[NSString stringWithUTF8String:date]:@""; 

    [item release]; 
} 

は最後に、「ポインタ 『のconst char型』パラメータするNSStringのを送信互換性のないポインタ型を警告ばかり。この構文の問題を修復するために

どのようにする方法。

は、事前にありがとうございます。

+0

はあなたのSQLiteデータベースを管理するためにCoreDataを使用していない理由はありますか?特にNSDateオブジェクトの格納では、データベースとobjective-Cの間でデータ型を管理する複雑さのいくつかが考慮されます。 – theTRON

+0

私はそのようなことに経験はありません。私がコアデータブックを読んでいる瞬間、本のタイトルとコアデータの内容は終わっています。また、このLab/Firstアプリはデータベース駆動アプリケーションでもあります。私はこの分野でも地位を得たいと思っています。 – NCFUSN

+0

その場合は、[Apple Core Data Tutorial](http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html)から始めることを強くお勧めします。少しの学習曲線がありますが、長期的にはあなたの人生を楽にしてくれます。 – theTRON

答えて

2

OKを、これは非常にシンプルなソリューションであることが判明した。中にあなたの日付と仮定すると、 SQLiteのは、あなたが文字列としてそれらを照会し、そのようにように、NSDateに変換しNSDateFormatterを使用することができ、日付データ型として格納されます。

... 
const char *sqlStatement = "SELECT ColumnA, ColumnB, ColumnC, strftime('%Y-%m-%d', CreationDate), strftime('%Y-%m-%d', ModificationDate) FROM MyTable"; 
sqlite3_stmt *compiledStatement; 
if (sqlite3_prepare_v2(db, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 
    // Loop through the results 
    while (sqlite3_step(compiledStatement) == SQLITE_ROW) { 
     NSString *creationDateText = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)]; 
     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
     [dateFormatter setDateFormat: @"yyyy-MM-dd"]; 
     NSDate *creationDate = [dateFormatter dateFromString:creationDateText]; 
     // Repeat for ModificationDate 
     ... 
    } 
} 
+0

ああ、100年前の質問はずっと前に解決されました。とにかく、このソリューションに感謝します。それも動作します。 – NCFUSN

関連する問題