【发布时间】:2015-06-05 05:07:05
【问题描述】:
什么更有效?
- 使用带有“IN”的谓词,例如 [NSPredicate predicateWithFormat:@"myObjectId in %@", requiredIds] ;
- 为每个 ID 创建一堆谓词,例如 ([NSPredicate predicateWithFormat:@"myObjectId == neededIds[i]"]),然后使用此谓词创建复合谓词,例如 [NSPredicate orPredicateWithSubpredicates:perIdPredicates]?
我更喜欢第一种情况,因为它看起来更简洁,代码更少,但我的同事坚持认为复合谓词的第二种情况更有效(但我从未在 WWDC 中听说过)。
【问题讨论】:
-
您可以自己检查:启用 Core Data SQL 调试 (stackoverflow.com/questions/6428630/…),您将看到所有 SQLite 查询和时间。
-
正如 Martin 所说,调试核心数据时自己检查。我的经验是,这取决于您有多少个 IN 以及您需要多少个谓词。如果您可以在两个或三个子谓词中解决它,那就是要走的路。如果您需要更多,通常最好使用 IN 选项
标签: objective-c performance core-data code-readability