gpt4 book ai didi

arrays - 如何在 Objective-C 中的 "dynamic NSArray"中添加 null 或 nil 值

转载 作者:技术小花猫 更新时间:2023-10-29 10:46:08 27 4
gpt4 key购买 nike

我遇到了关于在 NSArray 中添加 Null 或 nil 值的问题。实际上我正在添加 Null 值,因为我的数组计数不一样。我在 Custom TableViewCell 中添加了三个数组,两个数组来自网络服务,一个数组来自数据库。我将 IndexPath 保存在 core data 中,然后检索它。

enter image description here

如图所示,我将 indexPath 保存在字符串中,并将其从 DidSelectAtIndexPath 转换为 NSInteger,并在 cellForRowAtIndexPath< 中显示。我的问题是,它被覆盖了,因为它存储在字符串中。所以我将它保存在 coredataa 中并检索它,但我遇到了 cellforrowatindexpath 中数组不匹配计数的问题。我的代码是这样的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *STI=@"STI";
AuditTableViewCell *cell = (AuditTableViewCell *)[tableView dequeueReusableHeaderFooterViewWithIdentifier:STI];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AuditTableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
cell.accessoryType=UITableViewCellAccessoryNone;
}
cell.audittitlelbl.text=[NSString stringWithFormat:@"%@",[idarray objectAtIndex:indexPath.row]];
cell.auditdesclbl.text=[NSString stringWithFormat:@"%@",[namearray objectAtIndex:indexPath.row]];

NSManagedObject *device2 = [devices objectAtIndex:indexPath.row];
NSMutableArray *Checkarray=[devices valueForKey:@"Key"]; // Hear in this array I am getting Index count problem
NSLog(@"Device =%@",device2);
NSLog(@"Check Array =%@",Checkarray);
if(indexPath.row == CurrentIndexPath)
{
cell.listlbl.text=GlobalString;
[cell setBackgroundColor:[UIColor greenColor]];
}

return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
CurrentIndexPath=indexPath.row;
NSLog(@"Current Index Path =%ld",(long)CurrentIndexPath);
GlobalIndexPath = [[NSString stringWithFormat: @"%ld", (long)CurrentIndexPath] mutableCopy];

NSManagedObjectContext *context = [self managedObjectContext];

if (self.device) {
// Update existing device
[device setValue:GlobalStringChk forKey:@"Key1"];
[device setValue:GlobalIndexPath forKey:@"Key"];


} else {
// Create a new device
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:context];
[newDevice setValue:GlobalStringChk forKey:@"Key1"];
[newDevice setValue:GlobalIndexPath forKey:@"Key"];
}

NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}



[Audittable reloadData];



NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Device"];
self.devices = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
}

这是我的代码,听说我在 coredata 中保存 indexpath 并在数组中检索它。我在 cellforrowatindexpath 中遇到数组计数问题。如何在数组中添加 Null 或 nil 值,使其计数相同。我的数组是一个动态数组。主要问题是,如果用户单击它,我需要更改单元格的颜色。当我将值存储在 NSInteger 中并将其转换为索引路径时,我可以更改颜色但只能更改一个单元格time.When 我点击其他单元格整数值时被覆盖。因此,为此我将它保存到核心数据并检索,但是当我在 cellforrowatindexpath 中获取核心数据数组时,它会因为不同的计数而崩溃。提前致谢!

最佳答案

我们不能在像 NSMutableArray 这样的集合中直接添加 nil,因为它会引发异常。如果需要在 NSMutableArray 等集合中添加 nil,我们可以使用单例类 NSNull 来实现。

例如,我们有一个 NSMutableArray 类型的数组,我们可以使用 NSNull 添加 nil as-

[array addObject:@"string"];
[array addObject:[NSNull null]];

...等等……

NSNull 类定义了一个单例对象,用于表示集合对象中的 null 值(不允许使用 nil 值).

关于arrays - 如何在 Objective-C 中的 "dynamic NSArray"中添加 null 或 nil 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41054774/

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