DBaccess IOS框架。在NSString字段中为Nil

时间:2015-03-29 12:18:20

标签: ios objective-c xcode dbaccess

尝试保存对象时遇到问题。保存后其属性为空。

我的对象:

@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                                         

1 个答案:

答案 0 :(得分:0)

DBAccess需要您希望使用@dynamic实现ORM的属性。

DBAccess将它自己的getter和setter注入到类中,但是如果你使用@synthesize,那么Objective-c传统上会为你或者更新创建这些,如果你没有指定任何东西,它会自动生成这些。

以下是现在几乎已经完成的新网站的一个部分,提供了更清晰的帮助和指导:

  

4.。)创建数据对象

     

DBAccess对象是定义了属性的普通类   然后,ORM检查所有这些类并反映它们   SQLite数据库中的结构。如果你添加或删除列,那么   更新表以表示类的当前结构。

     

属性需要使用@dynamic来实现,这是为了表示   到ORM它将控制这些的获取和设置   来自数据库的值。

     

使用@synthesize实现的任何属性都不会   坚持,但DBAccess也不会干涉他们。这条路   你可以创建只被部分使用的大型类   ORM,但可以删除其他单独的类   你的申请。