gpt4 book ai didi

objective-c - 解析和排序需要立即显示的大型 NSMutableArray

转载 作者:行者123 更新时间:2023-11-29 04:58:44 24 4
gpt4 key购买 nike

我需要对包含 100 多个条目的数组进行解析和排序。我有下面的解析和排序方法。问题是:当呈现/加载保存 tableView 的 ViewController 时,我需要将存储在 NSMutableArray 中的字符串立即显示在 tableView 中。如果我不这样做,调用 ViewController 时 UI 将挂起/卡住。将代码移入我的单例之一会增加启动时间,我也需要避免这种情况。

我想我必须排队/阻止此代码,但我不知道该怎么做。非常感谢任何指导!

这是我必须解析的代码[NSTimeZoneknownTimeZones]:

-(void)parseTimeZoneNames {

for (int i = 0; i < [[NSTimeZone knownTimeZoneNames] count]; i++) {
NSString *fullName = [NSString stringWithFormat:@"%@", [[NSTimeZone knownTimeZoneNames] objectAtIndex:i]];
NSRange firstForwardSlash = [fullName rangeOfString:@"/"];
NSRange firstNameRange = NSMakeRange(firstForwardSlash.location + 1, ([fullName length] - firstForwardSlash.location - 1));
NSString *cityName = [NSString stringWithFormat:@"%@", [fullName substringWithRange:firstNameRange]];

NSRange secondforwardSlash = [cityName rangeOfString:@"/"];
if(!secondforwardSlash.length) {

NSRange secondNameRange = NSMakeRange(secondforwardSlash.location + 1, ([cityName length] - secondforwardSlash.location - 1));
cityName = [NSString stringWithFormat:@"%@", [cityName substringWithRange:secondNameRange]];

}

NSRange underscore = [cityName rangeOfString:@"_"];
if(!underscore.length) {

NSRange finalNameRange = NSMakeRange(underscore.location + 1, ([cityName length] - underscore.location - 1));
cityName = [NSString stringWithFormat:@"%@", [cityName substringWithRange:finalNameRange]];

}

[timeZonesArray addObject:cityName];

}

[timeZonesArray sortUsingSelector:@selector(compare:)];

}

这是在同一个 ViewController 中呈现它的代码:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [[NSTimeZone knownTimeZoneNames] count];
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

cell.textLabel.text = [NSString stringWithFormat:@"%@", [timeZonesArray objectAtIndex:indexPath.row]];

return cell;

}

最佳答案

如果代码确实太慢,那么您可以自己对数据进行预先排序并将其添加到应用程序包中的 plist 中。

世界上的时区不会改变。如果他们这样做了,我们需要担心的事情比您的应用程序遗漏了一些更重要的事情要担心。

关于objective-c - 解析和排序需要立即显示的大型 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437529/

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