我最近升级到了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中的代码并获得相同的结果,请告知我们。
答案 0 :(得分: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)