Ios 如何访问某些值中的一个值
大家好,, 我有一个类似这样的json。我的意思是我有一个内容,所有电影都有它们的类型。我需要做一个分类。例如,我需要检查哪种类型的电影是恐怖片。或者哪种类型的电影是惊悚片。我得到的所有价值如下: -->恐怖电影 但是我怎样才能控制这部电影的类型是否包括恐怖片呢?你的建议是什么Ios 如何访问某些值中的一个值,ios,nspredicate,Ios,Nspredicate,大家好,, 我有一个类似这样的json。我的意思是我有一个内容,所有电影都有它们的类型。我需要做一个分类。例如,我需要检查哪种类型的电影是恐怖片。或者哪种类型的电影是惊悚片。我得到的所有价值如下: -->恐怖电影 但是我怎样才能控制这部电影的类型是否包括恐怖片呢?你的建议是什么 谢谢您可以使用由字符串分隔的组件 { "id"=12 "genres_en" = "thriller,movies,action"; } { "id"=13 "genres_en" = "thriller,horror"
谢谢您可以使用
由字符串分隔的组件
{
"id"=12
"genres_en" = "thriller,movies,action";
}
{
"id"=13
"genres_en" = "thriller,horror";
}
我附近没有Xcode,因此以下代码可能包含一个错误(或两个:)) 试着这样做:
NSDictionary *dic = PARSE The JSON;
NSString *values = [dic objectForKey:"genres_en"];
NSString *firstValue = [[values componentsSeparatedByString:","] objectAtIndex:0];
希望它有帮助您可以尝试检查字符串是否包含所需的子字符串。像这样:
NSDictionary *yourDict = //your parsed json
NSString *genres = [yourDict objectForKey:@"genres_en"];
if ([genres rangeOfString:@"horror"].location != NSNotFound) {
return YES;
} else {
return NO;
}
或者,更好的方法是获取类型数组
NSString *typesString = [dic objectForKey:"genres_en"];
NSRange range = [typesString rangeOfString:@"horror"];
if(range.location != NSNotFound)
{
//it contains the substring "horror"
}
现在,您可以为每个条目存储此数组,并且每当您想要检查它是否属于某个性别时,只需循环遍历(每个条目的)类型数组并比较字符串
希望这有帮助
干杯 for(int j=0;jNSArray *types = [[typesString componentsSeparatedByString:","];
{
NSString*值=[[GREEP Components由字符串分隔:@“,“]objectAtIndex:j];
if([值IsequalString:@“movies”])
{
[genreMovies addObject:value];
}
}
谢谢你们的帮助。现在我有了我的结果:)使用这个解决方案,有必要运行
for循环
来查找@“恐怖”(或任何其他类型)是的,我以前喜欢这样做:NSDictionary*dic=解析JSON;NSString*值=[dic objectForKey:“流派”];NSString*firstValue=[[values componentsSeparatedByString:,“]objectAtIndex:0];但问题是有些数组有2个值,有些数组有3个,有些数组有1个值,这会产生错误吗?例如,我无法访问所有类型的恐怖片并进行分类?@santa你到底想要什么?你得到了什么?您的json解析是否正确?请注意,这一行[genre components separatedbystring:@“,”
每次都会给您相同的结果,但您执行它GenresArray.count
次。如果字符串很小,这不是问题,但是如果字符串很长,可能会出现性能问题。最好在for循环之前只获取一次此数组。
for(int j=0;j< GenresArray.count; j++)
{
NSString *value=[[genre componentsSeparatedByString: @","]objectAtIndex:j];
if([value isEqualToString:@"movies"])
{
[genreMovies addObject:value];
}
}