gpt4 book ai didi

objective-c - NSPredicate谓词WithFormat : variable substitution

转载 作者:行者123 更新时间:2023-12-03 17:41:18 25 4
gpt4 key购买 nike

给定:

MyObject *object1 = [MyObject createWithName:@"name1"];
MyObject *object2 = [MyObject createWithName:@"name2"];
MyObject *object3 = [MyObject createWithName:@"name3"];

NSArray *myArray = @[object1, object2, object3];
NSString *name = @"name1";

正在做

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == '%@'", name];
NSArray *filtered = [myArray filteredArrayUsingPredicate:predicate];

留给我

filtered.count == 0

但是

NSPredicate *predicate = [NSPredicate predicateWithFormat:
[NSString stringWithFormat:"name == '%@'",name]];
NSArray *filtered = [myArray filteredArrayUsingPredicate:predicate];

留给我

[filtered objectAtIndex:0] == object1
为什么?这对于 predicateWithFormat 来说似乎是一个奇怪的行为。 NSPredicate 的格式定义与 NSLog/NSString 不同吗?我在 the docs 中找不到任何明显的东西.

提前致谢!

最佳答案

我不知道为什么第二个版本有效,但第一个版本不起作用的原因是 @ 周围的单引号。这使得 @ 成为文字,因此您实际上是在过滤 name == @,这不是您想要的。只需删除单引号即可。

关于objective-c - NSPredicate谓词WithFormat : variable substitution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com