gpt4 book ai didi

objective-c - 从 Object-c 中的数组中删除 null

转载 作者:行者123 更新时间:2023-12-03 17:33:33 25 4
gpt4 key购买 nike

我有这段代码,结果是一个数组,整个数组中都有一大堆“ ”,我需要弄清楚如何删除它们。显然,在我的头撞到键盘之后,我正在寻求帮助。

在我的 .h 中我声明:

NSArray *sortedContacts;
NSArray *rawContacts;

然后在 .m 中:

-(void) buildContacts {   
ABAddressBook *addressBook = [ABAddressBook sharedAddressBook];
NSArray *contacts = [addressBook people];
rawContacts=contacts;

NSArray *firstNames = [rawContacts valueForKey:@"First"];
NSArray *lastNames = [rawContacts valueForKey:@"Last"];
NSArray *organization = [rawContacts valueForKey:@"Organization"];

NSMutableArray *fullNames = [NSMutableArray array];
for(int i = 0; i < [firstNames count]; i++)
{
NSString *fullName = [NSString stringWithFormat:@"%@ %@ %@",
[firstNames objectAtIndex:i],
[lastNames objectAtIndex:i],
[organization objectAtIndex:i]];
[fullNames addObject:fullName];
}

NSMutableArray *fullList = [[NSMutableArray alloc]initWithArray:fullNames];

[fullList removeObjectIdenticalTo: @"<null>"];

sortedContacts = [fullList sortedArrayUsingSelector:@selector(compare:)];

NSLog(@"%@",sortedContacts);
}

我尝试了太多的事情,以至于我已经只见树木不见森林了。

最佳答案

文字<null> NSNull 的单例实例是这样的描述了它自己。也就是说,就是-[NSNull description]返回。

反过来,这些 NSNull物体正在进入您的firstNames , lastNames ,和organization数组,因为这就是当您调用 -valueForKey: 时键值编码所做的事情在数组上,某些元素返回 nil当该消息使用相同的 key 转发给他们时。即调用[rawContacts valueForKey:@"First"]原因NSArray调用[element valueForKey:@"First"]对于 rawContacts 中的每个元素并将结果放入它构建的数组中。但是,由于数组不能包含 nil ,如果这些元素之一返回 nil来自[element valueForKey:@"First"] ,一个NSNull对象被添加到其位置。

然后,您正在格式化字符串 fullName来自 firstNames 的相应元素, lastNames ,和organization 。您需要检查这些元素中是否有 NSNull使用if ([value isKindOfClass:[NSNull class]])并处理它。例如,您可以跳过该记录。或者,您可以合并可用字段并忽略任何不可用字段。

无论如何, fullList 中的任何元素都不存在将是@"<null>"因为将值格式化为 @"%@ %@ %@"永远不会产生该字符串。 (可能是 @"<null> <null> <null>" 或类似的东西,但绝不仅仅是 @"<null>" 。)

关于objective-c - 从 Object-c 中的数组中删除 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426849/

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