2012-12-12 71 views
-4

我想通過故事板將數組傳遞給另一個類,並且我已經準備好了以下代碼,但是,日誌顯示可變數組爲空,因爲這顯然不是這種情況(在另一種方法中,日誌顯示它不是null,它只在prepareForSegue被調用時變爲null)。爲什麼是這樣?爲什麼我的可變數組在prepareForSegue方法中變爲NULL?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"confirmSegue"]) { 
     SBBookingConfirmation *bookingConfirmed=(SBBookingConfirmation*)segue.destinationViewController; 
     NSLog(@"dates chosen - %@", self.dateChosen);  
     bookingConfirmed.confirmedTimings=self.dateChosen; 
    } 
} 

輸出:

dates chosen - (null) 
+2

我們怎麼知道爲什麼'dateChosen'是零?你只是在樣本中提供了對它的引用,它們都沒有闡明爲什麼。 – trudyscousin

回答

3

顯然,要更改self.dateChosen別的地方。這與prepareForSegue:無關。

返回並檢查在調用segue之前(通過IB或方法)您做了什麼。

+0

這與'Xcode'沒有任何關係。 – 2012-12-12 17:58:00

+0

我改變它的唯一地方是在這裏, - (void)方法:(NSMutableArray *)array {date} {dateChosen = array; NSLog(@「以下內容已複製%@」,dateChosen); } – user1898662

+0

但是在你使用它之前是零。所以你在別的地方改了它。 – Mundi

0

確認,您的dateChosen屬性的類型爲強:

@property (nonatomic, strong) NSMutableArray *dateChosen; 
//if you have an NSArray instead of NSMutableArray, use copy instead of strong 

也是你的 「方法」 的方法(最壞的名字永遠!),你應該使用setter方法來設置dateChosen:

-(void)method:(NSMutableArray *)array { 
self.dateChosen=array; //not dateChosen = array; 
NSLog(@"The following has been copied %@", self.dateChosen); 
} 

最後,你需要初始化你的數組。如果你從來沒有像

self.dateChosen = [NSMutableArray array]; 

self.dateChosen = <NON-NIL array pointer> 

也難怪它會是零。

在旁註:更好地選擇你的方法/變量名稱。不要僅僅調用方法「方法」。 如果使用數組,通常最好用複數形式命名它:date * s *選擇,而不是dateChosen。

相關問題