gpt4 book ai didi

ios - 在数组中搜索字符串

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

我想要实现的是在数组中搜索字符串,这是用于搜索数组的代码

    if ([EssentialsArray containsObject:imageFilePath]) {

NSLog(@"YES");
}
else {

NSLog(@"NO");
NSLog(@"%@", ImageFilePath);
NSLog(@"%@", EssentialsArray);
}

NSLogs为imageFilePath返回以下内容:
/var/mobile/Applications/5051DC84-CAC8-4C1D-841D-5539A1E28CB1/Documents/12242012_11025125_image.jpg

这对于EssentialsArray:
(
{
EssentialImage = "/var/mobile/Applications/5051DC84-CAC8-4C1D-841D-5539A1E28CB1/Documents/12242012_11025125_image.jpg";
}
)

然后很明显,它们返回“NO”值,因为数组找不到字符串。
提前致谢

最佳答案

问题是[EssentialsArray containsObject:imageFilePath]的调用明确假定EssentialsArray是字符串数组,而事实并非如此。它是一个字典条目数组,带有一个键EssentialImage

至少有两种解决方案。第一种是为键为EssentialImage的字典条目创建字符串数组:

NSArray *essentialImages = [essentialsArray valueForKey:@"EssentialImage"];

if ([essentialImages containsObject:imagePath])
NSLog(@"YES");
else
NSLog(@"NO");

根据 essentialsArray的大小(请注意,约定规定变量始终以小写字母开头),创建数组只是为了使您可以执行 containsObject,这似乎有点浪费,但是它可以工作。

其次,我认为更好的方法是使用快速枚举遍历您的字典条目数组,寻找匹配项。为此,请定义一个方法:
- (BOOL)arrayOfDictionaries:(NSArray *)array
hasDictionaryWithKey:(id)key
andStringValue:(NSString *)value
{
for (NSDictionary *dictionary in array) {
if ([dictionary[key] isEqualToString:value]) {
return YES;
}
}

return NO;
}

现在,您可以检查字典数组是否具有名为 @"EssentialImage"的键,其字符串值等于 imagePath包含的字符串
if ([self arrayOfDictionaries:essentialsArray
hasDictionaryWithKey:@"EssentialImage"
andStringValue:imagePath])
NSLog(@"YES");
else
NSLog(@"NO");

更新:

您也可以使用 predicates:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"EssentialImage contains %@", imagePath];

BOOL found = [predicate evaluateWithObject:array];

关于ios - 在数组中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015765/

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