通过将JSON数据与数组进行比较来创建数组

时间:2014-10-19 17:14:26

标签: ios arrays json nsdictionary

我可以访问' hotel'来自json文件:

NSArray *hotel = [jsonObject valueForKeyPath:@"location.hotel"];

打印出像(更新):

<__NSCFArray 0x7b254d70>(
{
    test = A;
    hotel =     (
                {
            luxuryHotels = hotel1;

        },
                {
            luxuryHotels = hotel2;

        },    

我想检查数组&#39; hotel&#39;包含来自另一个数组的对象&#39; myHotels&#39;如果是,则创建一个只包含那些对象的数组。

NSArray *myHotels = [NSArray arrayWithArray:hotel.luxuryHotels];
NSMutableArray *hotel2 = [[NSMutableArray alloc] init];
for (NSArray *object in hotel) {
    NSMutableSet *set1 = [NSMutableSet setWithArray: object];
    NSSet *set2 = [NSSet setWithArray: myHotels];
    [set1 intersectSet: set2];
    NSArray *resultArray = [set1 allObjects];
    NSLog(@"resultArray is %@",resultArray);
    [hotel2 addObject:resultArray];
}

&#39; hotel2&#39;是这样的:( ),(hyatt ),( )

有没有办法得到一串只有hyatt?或者是一种结合数组字典的方法,如果列出了多个酒店,它就会显示在列表中?

1 个答案:

答案 0 :(得分:0)

仍然没有100%清楚数据结构是什么样的,但你可以尝试这样的事情

将您的初始数据结构(数组数组)折叠成一个数组,然后将其转换为可变集

NSArray *flattenedHotels = [jsonObject valueForKeyPath:@"@distinctUnionOfArrays.location.hotel"];

NSMutableSet *hotels = [NSMutableSet setWithArray:flattenedHotels];

接下来,您只需执行与myHotels

的交集
[hotels intersectSet:[NSSet setWithArray:myHotels]];

NSArray *result = hotels.allObjects;