- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在为我的 iOS 项目使用 dbaccess。如何将数组传递给 dbaccess 对象?例如:我有像这样的 dbobject:
@interface Member : DBObject
@property (strong) NSString* firstname;
@property (strong) NSString* lastName;
@end
@interface Group : DBObject
@property (strong) NSString* groupName;
@property (strong) NSString* adminName;
@property (strong) Member* members;
@end
对于这个组,它有 4 个成员,如何将所有组成员和组详细信息存储在一个对象中以及如何检索它们?广告感谢。
最佳答案
为了回答这个问题,我重新建模并在下面提供了一个示例,说明您将如何在这两个对象之间创建一对一关系。
这个问题源于这样一个事实,即在 Objective-c 中没有类型化数组这样的东西。如果有,我们将考虑重新实现界面的工作方式。
我已经将 Group 对象移动到成员中,因为成员属于一个组,然后向 Group 对象添加了一个 members 方法以向后查看子对象。
@interface Member : DBObject
@property (strong) NSString* firstname;
@property (strong) NSString* lastName;
@property (strong) Group* group;
@end
@interface Group : DBObject
@property (strong) NSString* groupName;
@property (strong) NSString* adminName;
- (DBResultSet*)members;
@end
现在的实现看起来像这样。
@implementation Member
@dynamic firstname,lastName, group;
@end
@implementation Group
@dynamic adminName, groupName;
- (DBResultSet *)members {
/* we achieve one-to-many relationships by querying the objects in the
manner a relational database would commonly be structured */
return [[[Member query] whereWithFormat:@"group = %@", self] fetch];
}
- (void)entityDidDelete {
/* when you create tight bonds, you may well wish to create 'trigger' methods
to clean data and keep the integrity in good order */
for (Member* member in [[[Member query] whereWithFormat:@"group = %@", self] fetch]) {
member.group = nil;
[member commit];
}
}
@end
现在没有什么可以阻止您创建一个数组作为属性类型,并将 Id 值存储在其中。但这不是那么干净,需要你维护它,而如果你正在寻找 FK 值,这不需要维护,你可以创建可爱的逻辑来停止删除与其他对象相关的对象,而无需水合物很多对象,然后查看数组内部。
此外,您还可以选择使用对象点符号来导航来自 Person 对象的强类型关系。
NSString* admin = person.group.adminName;
此外,当您将 Group 对象添加到 Member 中时:
@property (strong) Group* group;
DBAccess 自动在 SQLite 中为 group 属性创建索引,并在缓存中优先考虑其重要性,因为以这种方式链接的对象更有可能被访问。
希望对您有所帮助,阿德里安
关于ios - 在 DBAccess 中关联两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29672092/
我正在为我的项目使用 dbaccess。在我的项目中,一个 dbobject 的提交不起作用。我的 dbobject 是这样的消息: #import @interface MessageObject
我正在为我的项目使用 dbaccess。我想知道,dbaccess是否支持long long值? If I stored date timestamp 745665352687 than if I
我正在尝试使用委托(delegate)函数调试查询 - (void)queryPerformedWithProfile:(DBQueryProfile*)profile { NSLog(@"
我有像这样的 dbobject: #import #import @interface GroupMember : DBObject @property (strong) NSString *fi
假设我有: 一个名为“my_database”的 Informix 数据库 一个名为“my_table”的表,包含“col_1”、“col_2”和“col_3”列: 我可以通过创建 来提取表的内容my
我正在测试 DBAccess 以查看是否可以在项目中使用它。我在更改 sqlite 文件的位置时遇到问题,我希望它位于缓存目录中。这是我到目前为止在 AppDelegate.m 中编写的部分代码: -
我正在为我的 iOS 项目使用 dbaccess。如何将数组传递给 dbaccess 对象?例如:我有像这样的 dbobject: @interface Member : DBObject @prop
我想获取如下结构的数据。 //像这样的媒体表::- import UIKit @objc(Media) class Media: DBObject { dynamic var media
我正在研究我的数据库访问类,它试图使用 sqlite3 函数调用数据库,但我收到了所有这些错误,如果有人以前经历过这些错误或者他们有任何错误,我只是受伤了了解为什么它们可能会发生。 Undefined
我在更新现有记录 (DBAccess ORM) 时遇到问题。我想通过“ID”使用特定字段更新特定记录。 请查看以下 swift 代码。 func updatePostDataById(Post_id:
大家早上好, 你们中的一些人可能熟悉 Adrian Herridge 编写的“DBAccess”,它是 CoreData 的替代品。它是用 ObjC 编写的,虽然我已经成功地将对象的添加转换为 swi
我们计划在我们的 iOS 应用程序中使用 DBAccess。我们无法找到在应用程序运行时删除表格的方法。 我们的实际用例是找出数据库何时更新,然后删除或更改一些表。 DBAccess 似乎也没有将版本
我想确保以正确的方式格式化查询中的子句。例如,我有以下代码: int count = [[[MyDBObject query] whereWithFormat:@"url like '%%@%'",
我想更新多条记录(DBAccess ORM)。按特定字段的条件。比如 set city = "Goa"where name = "atul"。 请查看以下 swift 代码,它工作正常。但是如何在不使
我的问题是如何将 dbaccess 框架与现有的 sqlite 数据库一起使用?我的设备的文档文件夹中有“test.sqlite”文件。我什至将它重命名为“test.db”。当我尝试提交我的类 Wor
我要运行 dbaccess ,并将输出存储到 shell 变量。我知道有两种方法可以 (i) 输出到管道和 (ii) 卸载到文件。我想使用方法 (i) 种方法将查询输出存储到 shell 变量,但
我有两个类。第一个是 AbstractEntity.swift: class AbstractEntity : DBObject{ //... } 另外一个是User.swift,它继承了Ab
我正在尝试将 DBAccess 添加到我的 iOS 项目中。 从 AppDelegate 导入效果很好,但是当从 .mm 文件导入时,甚至在 .mm 文件中导入另一个导入 DBAccess.h 的类时
我正在尝试使用 id 初始化实体。 User *user = [[User alloc] initWithPrimaryKeyValue:userID]; 如果数据库中没有具有此 ID 的实体,它总是
我在使用声明 bool 类型和 Int 类型字段的 DBObject (DBAccess ORM) 中创建表时面临问题,而且我无法声明“描述”提交。 //Swift 代码:- 导入UIKit @obj
我是一名优秀的程序员,十分优秀!