Abhishek Banthia 8 years ago
parent
commit
d068b4e073
  1. 59
      Clocker/Preferences/CLPreferencesViewController.m

59
Clocker/Preferences/CLPreferencesViewController.m

@ -790,46 +790,55 @@ NSString *const CLTryAgainMessage = @"Try again, maybe?";
return; return;
} }
CLTimezoneData *dataObject = self.filteredArray[self.availableTimezoneTableView.selectedRow];
/*Fix for http://crashes.to/s/5b1432e77c9
/*Strip till the first comma we encounter*/ Additional precautions taken to make sure selected row's value is in the filtered array!
NSString *filteredAddress = dataObject.formattedAddress; */
NSRange range = [filteredAddress rangeOfString:@","]; if (self.availableTimezoneTableView.selectedRow >=0 && self.availableTimezoneTableView.selectedRow < self.filteredArray.count)
if (range.location != NSNotFound)
{ {
filteredAddress = [dataObject.formattedAddress substringWithRange:NSMakeRange(0, range.location)]; CLTimezoneData *dataObject = self.filteredArray[self.availableTimezoneTableView.selectedRow];
} /*Strip till the first comma we encounter*/
NSMutableDictionary *newTimezone = [NSMutableDictionary dictionary]; NSString *filteredAddress = dataObject.formattedAddress;
[newTimezone setObject:json[@"timeZoneId"] forKey:CLTimezoneID]; NSRange range = [filteredAddress rangeOfString:@","];
if (range.location != NSNotFound)
{
filteredAddress = [dataObject.formattedAddress substringWithRange:NSMakeRange(0, range.location)];
}
NSMutableDictionary *newTimezone = [NSMutableDictionary dictionary];
[newTimezone setObject:filteredAddress forKey:CLTimezoneName]; [newTimezone setObject:json[@"timeZoneId"] forKey:CLTimezoneID];
[newTimezone setObject:dataObject.place_id forKey:CLPlaceIdentifier];
[newTimezone setObject:dataObject.latitude forKey:@"latitude"];
[newTimezone setObject:dataObject.longitude forKey:@"longitude"];
[newTimezone setObject:CLEmptyString forKey:@"nextUpdate"];
[newTimezone setObject:CLEmptyString forKey:CLCustomLabel];
CLTimezoneData *timezoneObject = [[CLTimezoneData alloc] initWithDictionary:newTimezone]; [newTimezone setObject:filteredAddress forKey:CLTimezoneName];
[newTimezone setObject:dataObject.place_id forKey:CLPlaceIdentifier];
[newTimezone setObject:dataObject.latitude forKey:@"latitude"];
[newTimezone setObject:dataObject.longitude forKey:@"longitude"];
[newTimezone setObject:CLEmptyString forKey:@"nextUpdate"];
[newTimezone setObject:CLEmptyString forKey:CLCustomLabel];
NSArray *defaultPreference = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey];
if (defaultPreference == nil) CLTimezoneData *timezoneObject = [[CLTimezoneData alloc] initWithDictionary:newTimezone];
{
defaultPreference = [NSMutableArray new]; NSArray *defaultPreference = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey];
}
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:timezoneObject]; if (defaultPreference == nil)
NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:defaultPreference]; {
[newArray addObject:encodedObject]; defaultPreference = [NSMutableArray new];
}
[[NSUserDefaults standardUserDefaults] setObject:newArray forKey:CLDefaultPreferenceKey]; NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:timezoneObject];
NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:defaultPreference];
[newArray addObject:encodedObject];
[[NSUserDefaults standardUserDefaults] setObject:newArray forKey:CLDefaultPreferenceKey];
}
self.filteredArray = [NSMutableArray array]; self.filteredArray = [NSMutableArray array];

Loading…
Cancel
Save