1

新手问题在这里。

我为什么要这样做:

    NSPredicate *pred = [NSPredicate predicateWithFormat:@"(lineNum = %d)", i];
    [request setPredicate:pred];

我什么时候可以做到这一点?

    [request setPredicate:[NSPredicate predicateWithFormat:@"(lineNum = %d)", i]];

我找到的每个教科书代码示例都使用第一种方法,但据我所知,第二种方法基本上会做同样的事情,而且看起来更整洁。“pred”只被调用一次,那么为什么将它创建为一个对象呢?

4

2 回答 2

5

这主要与教科书的格式有关:很难在一页上容纳超过一定数量的字符,因为书没有滚动条。除此之外,两者是相同的。

在现实生活中这样做的一个原因是您可以设置断点并pred在调用之前进行检查setPredicate:

于 2012-11-03T03:05:09.110 回答
3

哪个看起来更整洁只是一个偏好问题。

两者在功能上没有区别。

对于更复杂的情况,第一种模式允许更多不言自明的代码,因为您可以放置​​有意义的变量名:

NSPredicate *correctLineNumber = 
   [NSPredicate predicateWithFormat:@"(lineNum = %d)", i];
[request setPredicate:correctLineNumber];
于 2012-11-03T03:05:26.247 回答