【发布时间】:2016-09-24 12:35:31
【问题描述】:
在上次更新 XCode 后,它建议我将代码更新为 swift 3 语言。 XCode 帮助我进行了更新,在我修复了一些需要手动更新的内容后,我遇到了一个我不知道该怎么做的转换。
这是关于在 Restkit 中删除孤立对象的。以下是 XCode 为将 swift 2 更新为 swift 3 生成的代码:
// fetchRequestBlock to delete orphaned objects ------ tmenus --------
manager?.addFetchRequest { (url:URL!) -> NSFetchRequest<AnyObject>! in
let pathMatcher = RKPathMatcher(pattern: config.getDataPath)
let match = pathMatcher.matchesPath(url.relativePath, tokenizeQueryStrings: false, parsedArguments: nil)
guard match else {
return nil
}
let fetchRequest = NSFetchRequest(entityName: "TipoMenuEntity")
return fetchRequest
}
以及它显示的错误:
/Users/mast/work/gColegios/iOSapp/gColegios/AppDelegate.swift:417:34: Cannot convert value of type '(URL!) -> <<error type>>' to expected argument type '((URL?) -> NSFetchRequest<NSFetchRequestResult>?)!'
所以我在 swift 3 中使用管理请求的新方法更新了代码:
// fetchRequestBlock to delete orphaned objects ------ tmenus --------
manager?.addFetchRequest { (url:URL!) -> NSFetchRequest<TipoMenu>! in
let pathMatcher = RKPathMatcher(pattern: config.getDataPath)
let match = pathMatcher.matchesPath(url.relativePath, tokenizeQueryStrings: false, parsedArguments: nil)
guard match else {
return nil
}
let fetchRequest: NSFetchRequest<TipoMenu> = TipoMenu.fetchRequest()
return fetchRequest
}
现在它显示新错误:
/Users/mast/work/gColegios/iOSapp/gColegios/AppDelegate.swift:418:34: Cannot convert value of type '(URL!) -> NSFetchRequest<TipoMenu>!' to expected argument type '((URL?) -> NSFetchRequest<NSFetchRequestResult>?)!'
我已经尝试了所有方法:更改 '(URL!) -> NSFetchRequest!'通过'((URL?)-> NSFetchRequest?)!' , 以及 ? 之间的各种组合?还有!
谁能帮我解决这个问题?
提前致谢
【问题讨论】:
-
参数和返回都应该是可选的