0
考慮:NSPredicate predicateWithFormat:變量替換
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我找不到任何明顯的東西。
在此先感謝!
我不知道你的問題的答案,但在第一個謂詞中,你不應該在@周圍有單引號。這使它成爲一個文字,所以你在過濾「@」而不是名字。 – rdelmar
你知道這個問題的答案! – Bryan