2014-01-08 71 views
0

我無法添加對象到NSMutableArray。我清楚地將2個對象放在typeList數組中,但計數只顯示爲1.我做錯了什麼?創建對象的NSMutableArray

content.h

@interface TBContentModel : NSObject 

+(NSMutableArray*)typeList; 
+(void)setTypeList:(NSMutableArray*)str; 

content.m

static NSMutableArray *typeList = nil; 

@implementation TBContentModel 

- (id) init { 
    self = [super init]; 
    if (self) { 
     typeList = [NSMutableArray array]; 
    } 
    return self; 
} 

contentviewcontroller.m

@implementation TBViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSString *jsonString = @"[{\"Content\":268,\"type\":\"text\"},{\"Content\":65,\"type\":\"number\"}]"; 
    NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
    NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 
    for (NSMutableDictionary *dictionary in array) 
    { 
     TBContentModel *test = [[TBContentModel alloc] init]; 
     test.type = dictionary[@"type"]; 
     [[TBContentModel typeList] addObject:test]; 
     NSLog(@"%@", test.type); 
    } 
} 

- (IBAction)tapButton:(id)sender { 
    NSLog(@"%d", [TBContentModel.typeList count]); // always shows 1 
} 
+5

請減少代碼量你的榜樣,並着重說明了問題。 – trojanfoe

+1

減少代碼。我是初學者,所以我不確定哪些代碼與問題相關。 – Sancho

回答

1

您正在重新創建你的靜態typeList對象每次你分配和初始化一個新的TBContentModel對象。

做以下修改:

static NSMutableArray *typeList = nil; 
static dispatch_once_t once; 

+ (NSMutableArray*)typeList { 
    dispatch_once(&once, ^{ 
     typeList = [NSMutableArray array]; 
    }); 
    return typeList; 
} 

從你init方法刪除以下行:

typeList = [NSMutableArray array]; 
+0

謝謝!這解決了它! – Sancho

+0

@Sancho你應該刪除你的'setTypeList:'方法。 – trojanfoe

+0

好的。會做。我假設你建議這樣做,因爲現在沒有理由可以直接向它添加對象。 – Sancho