在我的iPhone应用程序中,我正在阅读csv文件。相关的是这个:
NSString *countrycode = [[[NSString alloc] initWithFormat:@"%@", [arr objectAtIndex:2]]
stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
返回“CN”(代表中国)。
当我这样做时:
NSLog(@"Manual: %@, country code: %@",@"CN",countryCode);
我明白了:
Manual: CN, country code: "CN"
一个有引号,另一个没有。我不知道为什么会这样。
这让我沮丧的原因如下:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"countrycode == %@ ", @"CN"];
这很好用,从Core Data返回中国。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"countrycode == %@ ", countrycode];
这无法返回任何内容。我假设这是因为它引用了它或其他东西,虽然我可能不正确。
我在这里做错了什么?
答案 0 :(得分:16)
实际上,格式化谓词以排除引号的正确方法是使用%K
与%@
。请参阅Predicate Format String Syntax。
答案 1 :(得分:-1)
当您的countryCode
变量在回读时必须包含引号。第一次分配文字@"CN"
时,会删除引号,因为它们指定您的变量为NSString
。它们实际上不在文字字符串中。如果您想在第一个CN中使用字符串,则需要明确指定引号,例如@"""CN"""
但是,如果你想删除第二个字符串中的任何引号,你可以在将它放入谓词之前对字符串执行此操作:
[countryCode stringByReplacingOccurrencesOfString:@"""" withString:@""];