2014-01-06 85 views
4
NSInteger total = 4556; // Initialize total 

// NSLog all fields to make sure the variables are in place 
NSLog(@"%@", originField.text); 
NSLog(@"%@", destinationField.text); 
NSLog(@"%i", [startField.text integerValue]); 
NSLog(@"%i", [endField.text integerValue]); 
NSLog(@"%i", total); 

// Create a dictionary of them 
NSDictionary *newDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"Sat. Jan 6th, 2014", @"date", originField.text, @"origin", destinationField.text, @"destination", [startField.text integerValue], @"start", [endField.text integerValue], @"end", total, @"total", @"Personal", @"type", nil]; 
// EXC_BAD_ACCESS CODE 1 

我試過在樂器中使用殭屍模板,但我從來沒有得到一個對話框。當突破時,應用程序在initWithObjectsAndKeys上崩潰。我的死亡變量在哪裏?NSDictionary EXC_BAD_ACCESS

回答

16

您不能將原始類型放入Dictionary。用NSNumber包裝變量總數,然後將其放入Dictionary。

NSDictionary *newDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"Sat. Jan 6th, 2014", @"date", 
originField.text, @"origin", 
destinationField.text, @"destination", 
@([startField.text integerValue]), @"start", 
@([endField.text integerValue]), @"end", 
@(total), @"total", 
@"Personal", @"type", nil]; 
+1

可以使用新的符號'@(someNumber)'來代替,以防止這條長線變得更長。 –

+0

@HotLicks同意。我仍然以傳統風格工作。 – Apurv

+0

我有點來回切換。簡而言之,簡潔的符號很有幫助,因爲否則聲明就變得無法理解。 –

-1

您應該將startField和endField的原始NSSTring *值插入到NSDictionary中,並在必要時將其轉換爲int。