試圖通過由枚舉值填充的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];
}
謝謝! 可能是我需要更改問題。 如何存儲枚舉值? 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-mutable-objects-such-as) –
如果您使用的是最新版本的Xcode(和LLVM),你應該可以使用新的Objective-C NSNumber裝箱語法,它可以像這樣使用:'[NSMutableArray arrayWithObjects:@(aLeft),@(aRight),nil];' – mopsled
did not know那。謝謝@mopsled。 –