尝试保存对象时遇到问题。保存后其属性为空。
我的对象:
@interface Route : DBObject
@property (strong) NSString* content;
@property bool hidden;
@end
测试代码:
[DBAccess setDelegate:self];
[DBAccess openDatabaseNamed:@"test"];
Route * route = [Route new];
route.content = @"test content";
route.hidden = true;
[route commit];
DBResultSet * routes = [[Route query] fetch];
for (Route * r in routes) {
NSLog(@"Route content %@, hidden %d", r.content, r.hidden);
}
提交后 po route
给出了这个:
| content | UNKNOWN | Nil value
| Id | NUMBER | 1.000000
| hidden | NUMBER | 0.000000
日志输出:
Route content (null), hidden 0
答案 0 :(得分:0)
DBAccess需要您希望使用@dynamic实现ORM的属性。
DBAccess将它自己的getter和setter注入到类中,但是如果你使用@synthesize,那么Objective-c传统上会为你或者更新创建这些,如果你没有指定任何东西,它会自动生成这些。
以下是现在几乎已经完成的新网站的一个部分,提供了更清晰的帮助和指导:
4.。)创建数据对象
DBAccess对象是定义了属性的普通类 然后,ORM检查所有这些类并反映它们 SQLite数据库中的结构。如果你添加或删除列,那么 更新表以表示类的当前结构。
属性需要使用@dynamic来实现,这是为了表示 到ORM它将控制这些的获取和设置 来自数据库的值。
使用@synthesize实现的任何属性都不会 坚持,但DBAccess也不会干涉他们。这条路 你可以创建只被部分使用的大型类 ORM,但可以删除其他单独的类 你的申请。