Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在数组中搜索字符串_Ios - Fatal编程技术网

Ios 在数组中搜索字符串

Ios 在数组中搜索字符串,ios,Ios,我试图实现的是在数组中搜索字符串,下面是搜索数组的代码 if ([EssentialsArray containsObject:imageFilePath]) { NSLog(@"YES"); } else { NSLog(@"NO"); NSLog(@"%@", ImageFilePath); NSLog(@"%@", EssentialsArray); } NSLogs为imageFileP

我试图实现的是在数组中搜索字符串,下面是搜索数组的代码

    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");

更新:

您还可以使用:


问题是调用
[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");

更新:

您还可以使用:


您没有指定数组类型,但这是否与@cppl相同?请指定数组类型,谢谢,这与我的问题相同,并解决了我的问题。不知道为什么在我的搜索中没有出现。Cheers@cppl,它不是那个的复制品。这看起来是另一个问题。这里的问题是对象是字典,他正在尝试检查字符串。@ACB ok。。。嗯,我想Duck从我的评论中得到了一些价值。是的,我只是很快浏览了这篇文章,没有仔细阅读。不幸的是,cppl是对的,那篇文章不一样。我仍然很感谢你的帮助。你没有指定你的数组类型,但是这不就是@cppl完全忘记指定数组类型了吗?谢谢,这和我所问的一样,解决了我的问题。不知道为什么在我的搜索中没有出现。Cheers@cppl,它不是那个的复制品。这看起来是另一个问题。这里的问题是对象是字典,他正在尝试检查字符串。@ACB ok。。。嗯,我想Duck从我的评论中得到了一些价值。是的,我只是很快浏览了这篇文章,没有仔细阅读。不幸的是,cppl是对的,那篇文章不一样。我仍然感谢你的帮助。也感谢你花时间解释它是如何工作的。也感谢你花时间解释它是如何工作的。