gpt4 book ai didi

ios - Restkit 和删除 swift 3 中的孤立对象

转载 作者:行者123 更新时间:2023-11-29 11:54:37 24 4
gpt4 key购买 nike

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?)!' ,以及之间的各种组合?和!

谁能帮我解决这个问题?

提前致谢

最佳答案

嗯,事实证明正确的代码是

       // 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 的委托(delegate)。

然而,这里只是 XCode 完成的一个函数的 header ,以使其适应 swift 3。所以它只是放置正确的 header 并使代码适应这个版本的新选项。

感谢 New16 带领我做到这一点。

关于ios - Restkit 和删除 swift 3 中的孤立对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39676404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com