我是iphone编程的新手,我很喜欢我当前的项目。我有一个包含大量数据的文本文件。数据的排序如下:
51398030 10003254 80211593/94 1301281744 TOMTOM100
51398030 10003254 80211593/94 1301281744 TOMTOM101
51398030 10003254 80211593/94 1301281745 TOMTOM102
51398030 10003254 80211593/94 1301281745 TOMTOM103
51398033 10003254 80211595 1301281744 TOMTOM100
51398033 10003254 80211595 1301281744 TOMTOM101
51398033 10003254 80211595 1301281745 TOMTOM102
51398033 10003254 80211595 1301281745 TOMTOM103
51398029 10003254 80211597/98 1301281744 TOMTOM100
51398029 10003254 80211597/98 1301281744 TOMTOM101
51398029 10003254 80211597/98 1301281745 TOMTOM102
51398029 10003254 80211597/98 1301281745 TOMTOM103
我已导入此txt文件并创建了一个NSMutableArray,其中包含每一行作为对象。现在我有一个文本字段,用户可以在其中输入数字。应用程序现在应该通过文本文件查看,并整理包含此数字的行。
但我不知道如何开始。
这是我有多远:
NSData *tmpData = [NSData dataWithContentsOfURL:[NSURL URLWithString:trackTraceFileUrlName] ];
NSLog(@"%@",trackTraceFileUrlName);
//convert data to string
NSString *tmpString = [[NSString alloc] initWithData:tmpData encoding:NSUTF8StringEncoding];
NSArray *piecesArray = [tmpString componentsSeparatedByString:@"\n"];
NSMutableArray *trackTraceContent = [NSMutableArray arrayWithArray:piecesArray];
NSLog(@"*%@*",trackTraceContent);
答案 0 :(得分:1)
尝试以下代码
NSString *str = <string on which you want to search>;
NSRange r;
if ((r = [str rangeOfString:@"the string you want to search"]).location != NSNotFound)
//string found..
我认为你有一个数组,所以尝试修改一个
for (NSString *str in <array>)
{
NSRange r;
if ((r = [str rangeOfString:@"the string you want to search"]).location != NSNotFound)
//string found..
}
答案 1 :(得分:1)
因为您可能想要搜索数组中的所有行,并假设您的数组只包含字符串作为NSString对象:
NSArray *stringArray; // assuming that you already have these variables
NSString *numberEnteredByUser;
NSPredicate *pred = [NSPredicate predicateWithBlock:^(id obj, NSDictionary *bindings) {
NSString *str = (NSString *)obj;
return [str rangeOfString:numberEnteredByUser].location != NSNotFound;
}];
NSArray *results = [stringArray filteredArrayUsingPredicate:pred];
当然,您也可以在不使用NSPredicate的情况下创建目标数组,只需迭代stringArray
并将正确的对象添加到NSMutableArray results
。
答案 2 :(得分:0)
如果用户输入的数字是对数据的主要搜索,且它是唯一的,则使用数字作为关键:
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
MyObject obj = ...;
[dictionary setObject:obj forKey:obj.number];
// etc.
查找将更多更快,因为这正是字典(哈希表)的用途。
注意:Objective-C集合类只能保存对象,因此您需要使用NSNumber
对象来表示数字,而不是基本类型。
如果数字不是唯一,那么您仍然可以使用此技术,但您需要使用数字<来保存数组字典/ em>作为该数组的关键,这使事情变得复杂。但是,这样做仍然可以获得性能优势。