在swift中编写连接查询DBAccess

时间:2016-05-11 11:21:52

标签: ios swift orm dbaccess

我想获得如下结构的数据。

Display Record

//像这样的媒体表:: -

import UIKit

@objc(Media)

class Media: DBObject {    
    dynamic var media_id : NSNumber!;    
    dynamic var post_id : Post!;    
    dynamic var desc : String!;    
    dynamic var url : String!;
}

我想从" 发布"获取数据媒体列表来自" 媒体"表

一个帖子可能是多个媒体可能不是(媒体列表为零)。

请建议DBAccess Query在Swift中获取DBResultSet。

1 个答案:

答案 0 :(得分:1)

您在查询中添加了一个参数 joinTo

以下是头文件中的条目。

/**
 * Used to include "joined" data within the query string, you must use the tablename.columnname syntax within a where statement

 *
 * @param (Class)joinTo the class you would like to pwrform a SQL JOIN with
 * @param (NSString*)leftParameter the property name that you would like to use within the local object to match against the target
 * @param (NSString*)targetParameter the property within the class you wish to join with that will be matched with the left parameter.
 * @return (DBQuery*) this value can be discarded or used to nest queries together to form clear and concise statements.
 */
- (DBQuery*)joinTo:(Class)joinClass leftParameter:(NSString*)leftParameter targetParameter:(NSString*)targetParameter;

swift中的示例,链接两个表(Employee& Login)如下所示。

Employee.query().joinTo(Login, leftParameter: "login", targetParameter: "Id")

显然,该类在运行时无法更改,因此您可以在Dictionary对象中找到结果, joinedResults

虽然你所描述的与关系有很大关系,但我建议你看看这里的一对多例子:

Relating two objects in DBAccess

因此,在您的特定情况下,您可以将以下方法添加到Post类中。

func media -> DBResultSet {
        return Media.query().whereWithFormat("post_id = %@", withParameters: [self.post_id]).fetch()
    }

这将查找并返回媒体表中的结果。