Все,Неверное значение в NSNumber, CFNumberType не определен
Я создал DataModel с 3 поля:
- тип beingPlayed int16
- позиционного типа int16
- типа playedBy int16
I создали для него класс.
Tile.h
@property (nonatomic, retain) NSNumber * beingPlayed;
@property (nonatomic, retain) NSNumber * playedBy;
@property (nonatomic, retain) NSNumber * position;
Tile.m
@dynamic beingPlayed;
@dynamic playedBy;
@dynamic position;
Я предположил бы, что все 3 переменные NSNumbers и имеют Int16 типа (CFNumberType = kCFNumberSInt16Type).
Когда я создаю объект Tile, я установил все параметры 0 с [NSNumber numberwithint:0]
Но когда я хочу, чтобы установить другое значение для этого объекта, тип beingPlayed не установлен и поэтому значение не является правильным.
Я использовал:
self.beingPlayed = self.playedBy = self.position = [NSNumber numberWithInt:175];
Результат:
позиция = 175
playedBy = 175
beingPlayed = -81
Я использовал:
self.playedBy = self.position = [NSNumber numberWithInt:175];
self.beingPlayed = self.position;
Результат:
позиция = 175
playedBy = 175
beingPlayed = -81
Когда я отладки, я вижу, что:
- позиция имеет тип kCFNumberSInt16Type
- playedBy имеет тип kCFNumberSInt32Type
- arePlayed имеет NO тип ....
Что такое goi ng здесь? Где я могу установить тип или где установлен тип?
Моя проблема в том, что теперь это нормальный int, который может содержать только значения < 127, но я установил тип в datamodel для int16 ....
Edit:
Дополнительный код из OP из комментариев:
Tile *newTile = [NSEntityDescription
insertNewObjectForEntityForName:@"Tile" inManagedObjectContext:context];
newTile.playedBy = @(129);
newTile.position = @(129);
newTile.beingPlayed = @(129);
[context save:&error];
Logging: playedBy = -127, положение = 129 и beingPlayed = 129
Попробуйте NSNumber * myNumber = [Номер NSNumberWithLongLong: [tmpId longLongValue]]; – Rahul
Видимо, вы проверяете что-то совершенно другое. Присвоение указателей не копирует базовые объекты. 'self.playedBy = self.position' означает, что эти два свойства указывают на ** тот же самый объект ** в памяти. Они не могут * * иметь разные типы (или любые другие атрибуты). –
Не пытайтесь использовать 'NSNumber' вообще; вам это нужно только при хранении чисел в классе коллекции и всего лишь накладные расходы везде. – trojanfoe