0

我有一个简单的谓词让我发疯。

NSString *name;
NSDate *myDate;

-(void)fetch:(NSString *)name Date:(NSDate *)myDate
{
  ...
  //predicate
  NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@ AND myDate = %@",name,myDate];
  [req setPredicate:predicate];
}

-(void)fetch2:(NSString *)predicateStr
{
   ...
  //predicate
  NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateStr];
  [req setPredicate:predicate];
}

////// call #1/////
[self fetch:name Date:myDate]; //WORKS

////// call #2/////
NSString *predicateStr = [NSString stringWithFormat:@"name = %@ AND myDate = %@",name,myDate];
[self fetch2:predicateStr]; 

//Call#2 不起作用 - 无法解析 Date ?? 他们不是一模一样吗?参数相同,值没有变化。请注意,Date 参数是问题所在,NSString 参数可以在没有 Date 的情况下正常工作。

4

1 回答 1

0

不,它们不一样。

对于呼叫 #1,这是您传递给的内容+predicateWithFormat:

@"name = %@ AND myDate = %@"

对于呼叫 #2,这是您传递给的内容+predicateWithFormat:

@"name = Some Name AND myDate = 2012-10-17 8:05:42 PM -0800"

第一个是有效的谓词格式字符串,因此它可以工作。第二个不是有效的谓词格式字符串,因此它失败了。

于 2012-10-18T03:06:30.933 回答