gpt4 book ai didi

iphone - NSString 转 NSArray

转载 作者:行者123 更新时间:2023-12-03 19:09:26 29 4
gpt4 key购买 nike

我当前正在接收一个文件并将其存储到 NSString 中。然后,我从字符串中创建一个数组并将其呈现在 TableView 中。这在一定程度上有效。我目前收到的数据如下:

公司名称|帐户代码\r\n公司名称|帐户代码\r\n公司名称|帐户代码\r\n等等...

此刻我正在做:

NSString *dataString = [NSString stringWithContentsOfURL:url encoding:nil error:nil];
myArray = [dataString componentsSeparatedByString:@"\r\n"];

将数据显示为:

公司名称|帐户代码公司名称|账户代码公司名称|账户代码

我的问题是:我可以将“dataString”拆分为二维数组吗?或者我应该创建 2 个数组(一个包含 CompanyName,一个包含 AccountCode)。我该怎么做?

谢谢

编辑:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

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

// Configure the cell.
if (testArray.count >indexPath.row) {

cell.textLabel.text = [testArray2 objectAtIndex:0];
cell.detailTextLabel.text = [testArray2 objectAtIndex:1];

}

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;
}

编辑:

出于测试目的,我的代码是:

- (void)viewDidLoad {
[super viewDidLoad];

testArray = [[NSArray alloc] init];
NSString *testString = @"Sam|26,Hannah|22,Adam|30,Carlie|32";
testArray = [testString componentsSeparatedByString:@","];

dict = [NSMutableDictionary dictionary];
for (NSString *s in testArray) {

testArray2 = [s componentsSeparatedByString:@"|"];
[dict setObject:[testArray2 objectAtIndex:1] forKey:[testArray2 objectAtIndex:0]];
}

NSLog(@"Dictionary: %@", [dict description]);
NSLog(@"Account code for CompanyName1: %@", [dict objectForKey:@"CompanyName1"]);
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

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

// Configure the cell.
if (testArray.count >indexPath.row) {

cell.textLabel.text = [testArray2 objectAtIndex:0];
cell.detailTextLabel.text = [testArray2 objectAtIndex:1];

}

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;
}

最佳答案

Marzapower 是正确的,您可能想要使用 NSDictionary 或 NSMutableDictionary 来存储键值对。在上面的代码下方,您可以使用以下代码:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (NSString *s in myArray)
{
NSArray *arr = [s componentsSeparatedByString:@"|"];
[dict setObject:[arr objectAtIndex:1] forKey:[arr objectAtIndex:0]];
}
NSLog(@"Dictionary: %@", [dict description]);
NSLog(@"Account code for CompanyName1: %@", [dict objectForKey:@"CompanyName1"]);

日志记录代码显示生成的字典以及如何根据公司名称提取对象。请记住,这里没有错误检查,如果数组组件之一中没有管道字符,则 setObject 行将崩溃。

当然,如果您想要帐户代码作为 key ,只需翻转 setObject 行中的 1 和 0 即可。

编辑:在 cellForRowAtIndexPath 中,您应该访问 dict 字典而不是 testArray2 数组。例如,您可能想做这样的事情:

cell.textLabel.text = [[dict allKeys] objectAtIndex:[indexPath row]];
cell.detailTextLabel.text = [dict objectForKey:cell.textLabel.text];

(我希望这是正确的,我没有办法立即在 Xcode 中测试它。)

关于iphone - NSString 转 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6293445/

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