2016-01-23 42 views
0

我正在嘗試NSLog我的ViewController上每個標籤內的@「1」的數量的計數。我在storyboard上創建了3個標籤,然後連接了IBOutlet。我將這些標籤中的每一個添加到NSMutableArray並分配initWithObjects。我手動設置每個標籤的文本是1,2和3.NSCountedSet在if語句中

現在我的問題。我想用NScountedSet來計算標籤數組內的1的數量。如果條件滿足,則NSLog記錄一些文本。

我創建了一個簡單版本的代碼來突出顯示問題。

@property (weak, nonatomic) IBOutlet UILabel *l1; 
@property (weak, nonatomic) IBOutlet UILabel *l2; 
@property (weak, nonatomic) IBOutlet UILabel *l3; 



@property NSMutableArray *dice; 

@end 

@implementation MainViewController 

- (void)viewDidLoad { 
[super viewDidLoad]; 

[self.l1.text isEqualToString:@"1"]; 
[self.l2.text isEqualToString:@"2"]; 
[self.l3.text isEqualToString:@"3"]; 


self.dice = [[NSMutableArray alloc] initWithObjects: self.l1, self.l2, 
self.l3, nil]; 




NSCountedSet *setOfNumbers = [NSCountedSet setWithObject:self.dice]; 


if ([setOfNumbers countForObject: @"1" == 1]) { 
    NSLog(@"Count of 1 in array is %lu", (unsigned long) [setOfNumbers 
countForObject:@"1"]); 
} 

我得到3個警告......兩個黃色和一個紅色。 我的老師告訴我,這不會奏效,還有其他方法可以做到。而我以另一種方式完成了它。我只是很困惑,爲什麼這不起作用。我只在我班的第二週。

有人可以解釋爲什麼這不起作用,我怎麼能使它工作? 謝謝

+1

順便說一句 - 當你發佈一個關於代碼問題的問題,指出這行給你一個問題,並張貼實際的錯誤/警告消息。 – rmaddy

回答

1

顯然有幾個問題。

  1. [self.l1.text isEqualToString:@"1"];這樣的行不會做任何事情。您比較標籤的文字,但不檢查測試結果。
  2. 您將標籤而不是標籤的文本添加到self.dice陣列。
  3. 您在if行上有語法錯誤。
  4. 您使用數組而不是數組中的對象創建計數集。
  5. 將計數集中的計數存儲在一個變量中,以便不計算兩次計數。

下面是一些固定的代碼:

@implementation MainViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.dice = [[NSMutableArray alloc] initWithObjects:self.l1.text, self.l2.text, self.l3.text, nil]; 

    NSCountedSet *setOfNumbers = [NSCountedSet setWithArray:self.dice]; 

    NSUInteger count = [setOfNumbers countForObject: @"1"]; 
    if (count == 1) { 
     NSLog(@"Count of 1 in array is %lu", (unsigned long)count); 
    } 
} 
+0

謝謝,我現在意識到自己的錯誤! – RubberDucky4444