열거 형 값으로 채워진 NSMutableArray 속성에서 인덱스로 열거 형 값을 가져 오려고 시도했습니다.NSMutableArray 속성이 열거 형 값으로 채워짐
내가 원했던 것은 동적 속성을 설정하고 클래스 인스턴스 내에 다시 설정하는 것입니다.
따라서 문제가 드러나는 명확한 예를 코딩했습니다.
문제가 있습니다. 예제의 WriteByType 메서드는 올바른 값을 가져 오지 않습니다. 은 로그인해야 "당신은 오른쪽 화살표를 가져 오기"하지만
//----------------------------------------------------------
// CCMyClass.h
#import <Foundation/Foundation.h>
typedef enum {
aLeft,
aRight
} Arrow;
@interface CCMyClass : NSObject
{
NSMutableArray *_arrowsPkg;
}
@property(nonatomic,copy) NSMutableArray *arrowsPkg;
@property (nonatomic)int nextPkgIndex;
-(void)GetItemOne;
@end
//-------------------------------------------------------------
// CCMyClass.m
#import "CCMyClass.h"
@implementation CCMyClass
@synthesize arrowsPkg=_arrowsPkg;
-(void)WriteByType:(Arrow)AArrow
{
switch (AArrow) {
case aLeft:
NSLog(@"You Get Left Arrow");
break;
case aRight:
NSLog(@"You Get Right Arrow");
break;
}
}
-(void)GetItemOne
{
Arrow a =(Arrow)[[self arrowsPkg]objectAtIndex:1];
[self WriteByType:a];
}
@end
//---------------USAGE EXAMPLE----------------------------------------------
// CCAppDelegate.m
- (IBAction)btn1Clicked:(id)sender {
CCMyClass *c1=[[CCMyClass alloc]init];
NSNumber *v1=[NSNumber numberWithInt:aLeft];
NSNumber *v2=[NSNumber numberWithInt:aRight];
NSMutableArray *arr1=[NSMutableArray arrayWithObjects:v1,v2, nil];
[c1 setArrowsPkg:arr1];
[c1 GetItemOne];
}
! 질문을 변경해야 할 수도 있습니다. 어떻게 enum 값을 저장할 수 있습니까? ie.like this : NSMutableArray * arr1 = [NSMutableArray arrayWithObjects : aLeft, aLeft, aLeft, aRight, aLeft, aRight, nil]; 일부는 다음과 같이 말합니다 : "올바른 방법은 변경 가능한 배열을 속성으로 만들지 않는 것입니다." 이 제목에 대해 어떻게 생각하세요? [link] (http : // stackoverflow.com/questions/816720/whats-the-best-way-to-use-obj-c-2-0-properties-with-ns와 같은 변경 가능 객체) –
최근 버전의 Xcode (및 LLVM)를 사용하면 다음과 같이 사용할 수있는 새로운 Objective-C NSNumber boxing 구문을 사용할 수 있어야합니다.'[NSMutableArray arrayWithObjects : @ (aLeft), @ (aRight), nil]; ' – mopsled
didnt know 그. @mopsled 감사합니다. –