gpt4 book ai didi

iphone - 从单词对象的 NSMutableArray 中创建一个干净的单词 NSString,然后用于搜索

转载 作者:行者123 更新时间:2023-11-28 22:51:17 26 4
gpt4 key购买 nike

suitsArray 是 MutableArray,当按钮处于选中状态时添加对象(单词)。

在接下来的部分中,我需要将 suitsCriteriaString 变成一个干净的字符串,其中只有一个空格将单词与 suitsArray 分隔开,这意味着没有逗号或其他符号! (用 NSSet 什么的?)

NSString *suitsCriteriaString = [NSString stringWithFormat:@"%@", suitsArray];
NSString *wineSuitsString = [wine objectForKey:@"Suits"];
NSRange range = [wineSuitsString rangeOfString:suitsCriteriaString options:NSCaseInsensitiveSearch];

然后,NSRange,如果操作正确,应该检查 suitCriteriaString 中的单词是否存在于 wineSuitsString 中。然后,应过滤结果以仅包含匹配的词!

我的搜索功能的代码如下,如果您需要更多信息来完成这项工作,请告诉我。


SearchViewController.h


#import <UIKit/UIKit.h>

@interface SearchViewController : UIViewController {

@property (nonatomic, strong) NSMutableArray *allObjectsArray;
@property (nonatomic, strong) NSMutableArray *resultObjectsArray;

@property (nonatomic, strong) NSMutableArray *suitsArray;

@property (nonatomic, retain) IBOutlet UISlider *minPrisSlider;
@property (nonatomic, retain) IBOutlet UISlider *maxPrisSlider;

-(IBAction)searchButtonPressed:(id)sender;

@end

SearchViewController.m:


填充所有对象数组:

- (void)viewDidLoad
{
[super viewDidLoad];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Wine.plist"];
allObjectsArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
}

从 suitArray 添加或删除对象,我有 10 个类似这样的按钮:

-(IBAction)lambButtonPressed:(id)sender
{
if (lambButtonSelected == 0) {

lambButtonSelected = 1;
[suitsArray addObject:@"lamb"];

} else {

lambButtonSelected = 0;
[suitsArray removeObject:@"lamb"];

}
}

然后,将对象添加到搜索结果中:

-(IBAction)searchButtonPressed:(id)sender{  

resultObjectsArray = [NSMutableArray array];
for(NSDictionary *wine in allObjectsArray)

{

//String for price
NSString *winePrice = [wine objectForKey:@"Price"];

/*THIS IS WHERE I'M TRYING TO CHECK IF THE WORDS IN suitsCriteriaString
ARE EXISTING IN wineSuitsString */

NSString *suitsCriteriaString = [NSString stringWithFormat:@"%@", suitsArray];
NSString *wineSuitsString = [wine objectForKey:@"Suits"];
NSRange range = [wineSuitsString rangeOfString:suitsCriteriaString options:NSCaseInsensitiveSearch];


//THEN LAST, ADD OBJECTS WITH MATCH OF PRICE CRITERIA AND SUITS CRITERIA TO RESULTS:

BOOL priceConditionGood = YES;
if (minPrisSlider.value <= maxPrisSlider.value && (winePrice.floatValue < minPrisSlider.value || winePrice.floatValue > maxPrisSlider.value))
priceConditionGood = NO;
if (range.location != NSNotFound && priceConditionGood)
[resultObjectsArray addObject:wine];
}
}

//AND PUSH RESULTS CONTROLLER:

ResultsTableViewController *nextController = [[self storyboard] instantiateViewControllerWithIdentifier:@"ResultsController"];
nextController.objectsArray = [[NSMutableArray alloc]initWithArray:resultObjectsArray];
[self.navigationController pushViewController:nextController animated:YES];
}

最佳答案

“suitsCriteriaString”不会给你你想要的。遍历“suitsArray”并比较每个单词会容易得多:

NSString *wineSuitsString = [wine objectForKey:@"Suits"];
BOOL foundMatch = true;
for (NSString *suit in suitsArray) {
NSRange range = [wineSuitsString rangeOfString:suit options:NSCaseInsensitiveSearch];
if (range.location == NSNotFound) {
foundMatch = false;
break;
}
}

关于iphone - 从单词对象的 NSMutableArray 中创建一个干净的单词 NSString,然后用于搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11936007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com