2012-07-30 74 views
1

我正在製作一個顯示紅葡萄酒信息的iPhone應用程序。葡萄酒儲存在含有一系列字典的plist中。我將一個搜索視圖控制器添加到應用程序,並輕鬆啓動我想要獲得名稱爲「名稱」鍵值包含 nameString(來自文本框)的葡萄酒。搜索字典數組

這種情況在這裏停止,我需要一些關於這樣做的最合適的方法的建議。 NSArray類中是否有函數可以完成這項工作,應該引入NSPredicate,NSUserDefaults還是還有其他選項?我已經做了一些研究,但我需要一些建議,也許是一個開始的例子。

我將推進搜索功能,讓用戶包括/排除國家,獲得適合這種和那些食物的葡萄酒,設置最低價格,最高價格等等。字典包含所有這些信息的字符串。所以在我開始進行這樣的高級工作之前,我需要一些建議,哪些功能可以最好地完成我的工作。

-(IBAction)searchButtonPoke:(id)sender{ 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Wines" ofType:@"plist"]; 
    allObjectsArray = [[NSMutableArray alloc] initWithContentsOfFile:path]; 

    NSString *nameString = [NSString stringWithFormat:@"%@", [nameTextField text]]; 

    resultObjectsArray = /*objects where the value for the key "Name" contains 
                    nameString*/; 

回答

8

如何簡單地遍歷數組並比較名稱?

resultObjectsArray = [NSMutableArray array]; 
for(NSDictionary *wine in allObjectsArray) 
{ 
    NSString *wineName = [wine objectForKey:@"Name"]; 
    NSRange range = [wineName rangeOfString:nameString options:NSCaseInsensitiveSearch]; 
    if(range.location != NSNotFound) 
    [resultObjectsArray addObject:wine]; 
} 

歡呼聲, 安卡

+0

謝謝!看起來很完美,工作完美。 – ingenspor 2012-07-31 00:13:45

7

這個作品!測試!

for (NSDictionary* dict in Array) { 

    if ([[dict objectForKey:@"key"] isEqualToString:string]) { 

     Index = [Array indexOfObject:dict]; 
    } 
} 
1

我們可以使用NSPredicate過,像這樣:

NSPredicate *predicate = 
    [NSPredicate predicateWithFormat:@"publisher == %@", @"Apress" ]; 
NSArray *filtered = [bookshelf filteredArrayUsingPredicate:predicate]; 

如果發佈者可以在書架陣列中找到,過濾次數會大於0

我這樣想是更加清潔的方式來搜索。希望能幫助到你。