0

我最近升级到 XCode 6.3,我正在尝试根据 Apple 文档启动 ODQuery 并收到错误。

'Int' 不能转换为 'ODMatchType'

我正在使用 Apple 自己的文档Open Directory Programming Guide

这是我的 Swift 代码:

var err:NSError?
var session = ODSession.defaultSession()
var node = ODNode(session: session, name: "/Local/Default", error: &err)
var query = ODQuery(node: node, forRecordTypes: kODRecordTypeUsers, attribute: kODAttributeTypeRecordType, matchType: kODMatchContains, queryValues: "darren", returnAttributes: kODAttributeTypeStandardOnly, maximumResults: 10, error: &err)?

问题似乎是尝试的 kODMatchContains 或任何其他 matchType 与 Swift 1.2 功能不兼容?

如果有人知道发生了什么,或者您是否可以自己尝试 6.3 中的代码并获得相同的结果,请告诉我。

4

1 回答 1

1

这与 Swift 1.2 无关。在 Swift 中总是这样。该matchType:参数需要是 ODMatchType。将其强制为 ODMatchType,如下所示:

... matchType: ODMatchType(kODMatchContains), ...

然后该行将编译得很好(一旦您删除了最后的问号)。

看来我得给你拼出来了……

var err:NSError?
var session = ODSession.defaultSession()
var node = ODNode(session: session, name: "/Local/Default", error: &err)
var query = ODQuery(node: node, forRecordTypes: kODRecordTypeUsers, attribute: kODAttributeTypeRecordType, matchType: ODMatchType(kODMatchContains), queryValues: "darren", returnAttributes: kODAttributeTypeStandardOnly, maximumResults: 10, error: &err)
于 2015-04-19T02:18:30.153 回答