Я сойду с ума от этой ошибки!У меня есть этот кусок кода, который хорошо работает на iOS 4.3
newRegistered.ticket_id = [NSNumber numberWithInt:
[curRegistered objectForKey:@"ticket_id"] intValue]];
Если я делаю:
NSLog(@"ID before : %d, ID after : %d",
[curRegistered objectForKey:@"ticket_id"] intValue], [newRegistered.ticket_id intValue]);
У меня на iOS 4.3:
IDдо: 35459, ID после: 35459
И на iOS 5.0:
ID до: 35459, ID после: -30077
Пожалуйста помоги !Спасибо за продвижение.
## РЕДАКТИРОВАТЬ: ## Я немного больше исследовал проблему.Кажется, проблема заключается в назначении NSNumber в CoreData.Я должен был указать, что фрагмент кода выше используется с CoreData (newRegistered является NSManagedObject, а curRegistered является NSDictionary, содержащим данные JSON (только строки, никогда не int или long ...)).
Здеськонкретная проблема:
long long test = 789654;
Registereds *a = [NSEntityDescription insertNewObjectForEntityForName:@"Registereds" inManagedObjectContext:self.managedObjectContext];
a.ticket_id = [NSNumber numberWithLongLong:test];
NSLog(@"%lld -> %@", test, a.ticket_id); // Displays 789654 -> 3222 on iOS 5 and 789654 -> 789654 on iOS 4.3
NSNumber *ticket_id = [NSNumber numberWithLongLong:test];
NSLog(@"%lld -> %@", test, ticket_id); // Displays 789654 -> 789654
Таким образом, похоже, что проблема связана с объектом Registereds (который является NSManagedObject, как newRegistered в предыдущем примере).
У вас есть идеи, почему это происходит?Я никогда не видел ничего подобного за более чем 2 года программирования, эта ошибка действительно заставляет меня думать, что я не знаю, как кодировать ...