我有一个 sqlite3 表,我试图将其映射到 Objective-C 中的一个对象。该表的一个属性是“completed_at”,它存储为 DATETIME。
我想在我的 Objective-C 类(继承自 NSObject)上创建一个属性,该属性将很好地映射到“completed_at”属性。
Objective-C 有一个 NSDate 类型,但我不确定它是否会直接映射?
最佳答案
我在这里分享的只是关于保存和检索数据以进行演示的日期格式化的核心内容。如果您对此代码片段有任何疑问,那么我将分享我在项目中使用的完整代码。
保存数据时,像这样在 sql 语句中绑定(bind)日期值:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateString=[dateFormat stringFromDate:[NSDate date]];
sqlite3_bind_text(saveStmt, 1, [dateString UTF8String] , -1, SQLITE_TRANSIENT);
当您检索数据时,您必须编写以下代码:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *myDate =[dateFormat dateFromString:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)]];
现在你有一个 NSDate 类型的变量 myDate,你可以用你的方式渲染它:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy hh:mm:ss a"];
NSLog(@"My Date was : %@", [formatter stringFromDate:myDate]);
你必须要记住三件事:
- 在你的 SQLite 日期字段类型应该是 DATETIME
- 存储和检索时的日期格式应该相同
- 现在您可以按照格式以自己的方式展示。下面给出了格式的详细信息。
格式:
'dd' = Day 01-31
'MM' = Month 01-12
'yyyy' = Year 2000
'HH' = Hour in 24 hour
'hh' = Hour in 12 hour
'mm' = Minute 00-59
'ss' = Second 00-59
'a' = AM / PM
关于Objective-C 和 sqlite 的 DATETIME 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/302664/