2014-03-12 51 views
0
  1. 我正在从数据库...在阵列中存储这些价值观...喜欢的名称在NamesArray和ID的存储在存储IDsArray ...

实例名称和ID的: NamesArray - {彼得,阿诺德,约翰·塞缪尔}如何匹配id的名称iphone?

IDsArray - {1,2,3,4}

从数据库得到这些值后...我整理NamesArray ......这会是这样的...

名称sArray Value - {Arnold,John,Peter,Samuel}

如何根据NamesArray更改IDsArray?

  1. 需要的搜索功能相同的情况下....

例子: 我寻找“P”在搜索栏的文本......它会在TableView中显示“彼得” ...

如何根据搜索文本从idarray获取ID?

在此先感谢

+2

? – rckoenes

回答

1

你可以使用与键名称和ID字典的数组。之后你可以使用NSPredicate为您的搜索和NSSortDescriptor排序

yourArray: (
    { 
     id = 1; 
     name = Peter; 
    }, 
    { 
     id = 2; 
     name = Arnold; 
    }, 
    { 
     id = 3; 
     name = John; 
    }, 
    { 
     id = 4; 
     name = Samuel; 
    }); 

排序

nameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
nameDescriptors = [NSArray arrayWithObject:nameDescriptor]; 
sortedArray = [yourArray sortedArrayUsingDescriptors:nameDescriptors]; 

过滤

NSString *strToFilter = @"P"; 

NSArray *filteredNames = [yourArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(name BEGINSWITH[c] %@)", strToFilter]]; 
1

对于这个场景简单的逻辑可以做到的。

NamesArray - {彼得·阿诺德,约翰·塞缪尔} IDsArray - {1,2,3,4}

是在独立的阵列搜索的名称,当您搜索不会影响NamesArray。

searchedNamesArray - {}彼得

后获得搜索对象的数组从指数

for (NSString *value in searchedNamesArray) 
{ 

NSInteger index = [NamesArray indexOfObject:value]; 

// you will get the index of the object from which you can use from getting the id from IDsArray 

NSLog(@"ID - %@", [IDsArray objectAtIndex:index]); 
} 
你为什么不保存的自定义对象,同时具有名称和ID在一个阵列
+0

如何获得id如果一个数组包含相同的名称两次或三次(当搜索....? –

+0

而不是NSLog,将'[IDsArray objectAtIndex:index]'添加到新数组中,从中您可以获得id的阵列。 – RAJA