gpt4 book ai didi

ios - 从 Swift 4 中的计算变量创建关键路径

转载 作者:搜寻专家 更新时间:2023-11-01 06:14:46 25 4
gpt4 key购买 nike

我有一个 fetchedResultsController,我想在其中为 Date 添加一个键路径,所以我没有一天的每一秒的部分。很简单,我想...我将为 MyEntity

创建一个 extension
extension MyEntity {

var dateForSection: String {
get {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .long
if let time = self.time {
return dateFormatter.string(from: time)
}
return "Unavailable Date"
}
}
}

然后,在 fetchedResultsController 惰性 var 声明中的 MyViewController 上,我声明 frc 如下:

let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: #keyPath(MyEntity.dateForSection), cacheName: nil)

我得到这个编译器错误:

Argument of '#keyPath' refers to non-'@objc' property 'dateForSection'

在谷歌搜索中,这个问题看到了 2016 年的一些 Swift 错误报告,但我还没有看到任何解决方案。我该如何解决这个问题?

附录

我试过在 var 声明前添加 @objc。我也尝试过添加 @objc dynamic、关闭 Xcode、从命令行修改派生数据、重新启动 Xcode、重新启动我的机器等。

最佳答案

我无法重现问题。我用从我的实体自动生成的组类创建了一个核心数据项目,并添加了一个计算变量:

extension Group {
@objc var yoho : String {
return "yoho"
}
}

然后我在我的延迟获取结果 Controller 初始化器中修改了同一行:

    let frc = NSFetchedResultsController(
fetchRequest:req,
managedObjectContext:self.managedObjectContext,
sectionNameKeyPath:#keyPath(Group.yoho), cacheName:nil)

它编译。我不知道为什么你的没有。

另一方面,#keyPath 只不过是为您生成的字符串,这里期望的是字符串,所以如果您真的无法编译它,只需将 "dateForSection" 并完成它。当然,这并不意味着它会运行而不会崩溃,但至少它会编译并且您可以继续前进。

关于ios - 从 Swift 4 中的计算变量创建关键路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47586057/

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