Restkit和快速删除孤立对象3
最后一次更新XCode后,它建议我将代码更新为swift 3语言。 XCode帮助我进行了更新,在我修复了一些需要手动更新的内容之后,我遇到了一个转换,我无法弄清楚该怎么做。Restkit和快速删除孤立对象3
这是关于删除Restkit中的孤立对象。下面是雨燕2至SWIFT 3更新的生成的代码通过的XCode:更新代码与
/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>?)!'
所以我有:
// 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
}
而且错误它显示快速管理请求的新方法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?)!' ,以及各种组合之间?和!
任何人都可以帮我解决这个问题吗?
在此先感谢
误差基本上说,这是期待NSFetchRequestResult
。它是例如NSAsynchronousFetchResult
的结果。您正在使用请求。
请您再解释一下吗? –
使用'NSAsynchronousFetchResult'而不是'TipoMenu'。类型检查失败,我认为你的'TipoMenu'是'NSManagedObject'的一个子类。使用“NSFetchRequestResult”的任何子类。 –
嗯,事实证明,正确的代码是
// fetchRequestBlock to delete orphaned objects ------ tmenus --------
manager?.addFetchRequest { (url:URL?) -> NSFetchRequest<NSFetchRequestResult>? in
let pathMatcher = RKPathMatcher(pattern: config.getDataPath)
if let match = pathMatcher?.matchesPath(url?.relativePath, tokenizeQueryStrings: false, parsedArguments: nil)
{
if (match)
{
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "TipoMenuEntity")
return fetchRequest
}
}
return nil
}
什么让我感到困惑的是,在其他的要求,有必要把NSFetchRequest的请求被创建,因为显然与SWIFT 3 NSManagedObject类扩展了代码以符合NSFetchRequest的委托。
但是,这里只是XCode完成的一个函数的头文件,以适应swift 3.因此,它只是放置正确的头文件并使代码适应该版本的新选项。
感谢New16给我带来了这个。
参数和返回值都应该是可选的 – Wain