作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个这样的数据模型:
Section <----->> SubSection
(subSections) (section)
现在我想获取给定部分的所有 SubSections。在 Objective C 中我会这样做:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"section == %@",
self.sectionObject];
在 Swift 中我尝试过
fetchRequest.predicate = NSPredicate(format: "section == %@", arguments: self.sectionObject)
(FetchRequest
是为实体SubSection
配置的。)
但这会导致编译器错误无法使用类型为“(format: String,arguments: NSManagedObject?)”的参数列表调用类型“NSPredicate”的初始值设定项
我知道我可以这样做:
let sectionName: String = self.sectionObject!.valueForKey("name") as! String
fetchRequest.predicate = NSPredicate(format: "section.name == %@", argumentArray: [sectionName])
但据我从 Apple 文档中记得,这性能不是很好,因此不建议这样做。
那么如何在 Swift 中正确完成呢?
最佳答案
两者
NSPredicate(format: "section == %@", arguments: [self.sectionObject])
NSPredicate(format: "section == %@", self.sectionObject)
应该可以工作。第一个将谓词的值作为数组传递,第二个将作为变量参数列表。
关于swift - 如何在 Swift 中构建 NSPredicate 来获取关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983279/
我是一名优秀的程序员,十分优秀!