这里有一个问题。
我为什么要这样做:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"(lineNum = %d)", i];
[request setPredicate:pred];
什么时候可以这样做?
[request setPredicate:[NSPredicate predicateWithFormat:@"(lineNum = %d)", i]];
我找到的每个教科书代码示例都使用第一种方法,但据我所知,第二种方法基本上会做同样的事情,只是看起来更整洁。 “pred”只被调用一次所以为什么要把它作为一个对象?
答案 0 :(得分:5)
这主要与文本书的格式有关:在页面上很难容纳超过一定数量的字符,因为书籍没有滚动条。除此之外,两者是相同的。
在现实生活中这样做的一个原因是,您可以在致电pred
之前设置一个断点并检查setPredicate:
。
答案 1 :(得分:3)
哪一个看起来更整洁只是一个偏好的问题。
两者之间没有功能差异。
对于更复杂的情况,第一种模式允许更自解释的代码,因为您可以放置有意义的变量名称:
NSPredicate *correctLineNumber =
[NSPredicate predicateWithFormat:@"(lineNum = %d)", i];
[request setPredicate:correctLineNumber];