2011-01-17 5 views
0

저는 iOS와 Objective-C를 처음 사용하고 일반 속성을 가진 클래스를 만들려고합니다. 2 추가를 좋아하지 않는일반 id 유형 속성을 만드는 방법은 무엇입니까?

[generalSection.items addObject:[[HeaderInfo alloc] initWithLabel:@"Tacho seal security" value:@"Some String Value"]];

[generalSection.items addObject:[[HeaderInfo alloc] initWithLabel:@"Tacho seal security" value:YES]];

하지만 컴파일러를 다음과 같이 말한다 :

@interface HeaderInfo : NSObject { NSString *label; id value; }

@property (nonatomic, retain) NSString *label; 
@property (nonatomic, retain) id value; 
- (HeaderInfo *)initWithLabel:(NSString *)lbl value:(id)val; 

@end 

은 그럼 배열이 클래스를 추가하려고 해요

Warning: passing argument 2 of 'initWithLabel:value:' makes pointer from integer without a cast

내가 뭘 잘못하고있어? 어떤 도움이라도 대단히 감사합니다.

또한 나중에 BOOL 또는 NSString인지 여부에 따라 값을 확인할 수 있습니까?

감사합니다.

답변

2

유형이 객체가 아니므로 id (일반 객체)로 전달할 수 없습니다.

NSNumber을 전달해야합니다. NSNumber는 숫자를 객체로 전달할 때 숫자를 캡슐화하는 객체입니다.

당신은이 같은 NSNumber 만들 수 있습니다 : 당신이 그런 식으로 그것을 위해 할 수있는 런타임에 발생하는 객체의 종류를 확인하려면 [NSNumber numberWithBool:YES];

당신은 [value boolValue];

와 값을 검색 할 수 있습니다 :

if ([value isKindOfClass:[NSNumber class]]) { 
    //It's a number 
} 
else if ([value isKindOfClass:[NSString class]]) { 
    //It's a string 
} 
+0

+1 이것이 방법입니다. 'NSNumber' 클래스는 기본 데이터 타입에 대한 래퍼입니다. –

관련 문제