나는 건너 뛰는 내 배열에 몇 객체 (2-10)를 추가 할 방법이 필요 NILS 있습니다 이들 :NSMutableArray에 nil 객체를 건너 뛰는 객체를 추가하는 방법은 무엇입니까?
NSMutableArray *arr = [[NSMutableArray alloc] init];
[arr addObjectsSkipNils:obj1, obj2, obj3];
나는 우아한 방법으로이 방법을 쓸 수 있습니까?
나는 건너 뛰는 내 배열에 몇 객체 (2-10)를 추가 할 방법이 필요 NILS 있습니다 이들 :NSMutableArray에 nil 객체를 건너 뛰는 객체를 추가하는 방법은 무엇입니까?
NSMutableArray *arr = [[NSMutableArray alloc] init];
[arr addObjectsSkipNils:obj1, obj2, obj3];
나는 우아한 방법으로이 방법을 쓸 수 있습니까?
이 분류 방법은 작동합니다 :
@interface NSMutableArray (MyAdditions)
- (void)addObjectsSkipNilsWithCount:(NSUInteger)count objects:(id)obj, ...;
@end
@implementation NSMutableArray (MyAdditions)
- (void)addObjectsSkipNilsWithCount:(NSUInteger)count objects:(id)obj, ...
{
va_list ap;
va_start(ap, obj);
// First object:
if (obj != nil)
[self addObject:obj];
// Remaining objects:
for (NSUInteger i = 1; i < count; i++) {
id myobj = va_arg(ap, id);
if (myobj != nil)
[self addObject:myobj];
}
va_end(ap);
}
@end
예 :
NSMutableArray *a = [NSMutableArray array];
[a addObjectsSkipNilsWithCount:3 objects:@"foo", nil, @"bar"];
NSLog(@"%@", a);
// Output: (foo, bar)
당신은 nil
변수 인수 목록 터미네이터로 사용할 수 없기 때문에, 명시 적으로 개체 수를 지정해야합니다. (카운트가 제공된 실제 객체 수보다 많으면 나쁜 일이 발생할 수 있습니다.)
당신은 사용할 수 있습니다
[yourMainArray removeObjectIdenticalTo:[NSNull null]];
을 이제 당신은 당신이 아주 쉽게 할 수 arr
이를 복사 할 경우.
처음부터 nil 값은 배열에 어떻게 도달 했습니까? –
예, 이것은 닭고기 및 달걀 문제입니다. –
어레이 객체에 nil 또는 [NSNull Null]이 포함되어 있습니까? –
각 개체는 nil이거나 실제 개체입니다. 저는 3 문장을 쓰고 싶지 않습니다. 1 문장으로 끝낼 수 있습니까? –
그런 식으로, 심지어는 특히 nil이 아닌 값으로는 수행 할 수 없습니다. 목록의 마지막 값은 항상 nil이어야합니다. –