#iphone #objective-c #xcode #core-data
#iPhone #objective-c #xcode #core-data
Вопрос:
Как сказано в названии, у меня есть отношение «один ко многим», и «много» принимает числа, и ему присваивается NSNumber, однако, когда я извлекаю это число обратно из coredata, оно приходит в виде PFCachedNumber. Есть мысли о том, почему это может быть?
Спасибо!
for (UserNumber *info in pinNumberArray) {
//The numbers I'm after are inside ergTimes.
NSSet *time = [[NSSet alloc] initWithSet:info.Times];
for (ErgTimes *ergTimes in time){
NSLog(@"Times Class : %@", [ergTimes.Twok class]);
}
}
Комментарии:
1. Когда вы извлекаете данные обратно, присваиваете ли вы возвращенные значения и помещаете их в новый NSNumber? Также похоже, что PFCachedNumber — это внутренний класс, который каким-то образом является частью Core Data — на странице, связанной ниже, есть небольшая информация, которую вы, возможно, уже прочитали. duckrowing.com/2010/03/11/using-core-data-on-multiple-threads
2. Хм, да, даже если я присвою своему объекту coredata значение NSNumber сразу после его извлечения, он все равно сообщит мне, что это значение PFCashedNumber
3. Как только вы снова извлекаете данные, какова была ваша задача с ними? Можете ли вы использовать его / выводить и т.д. Без ошибок?
Ответ №1:
Я бы не стал беспокоиться об этом. Это обычное явление.
NSNumber, как и большинство распространенных классов API, на самом деле является «кластером классов», в котором большое количество классов маскируется под один класс. Например, если вы инициализируете NSString в качестве пути к файлу, вы фактически получаете обратно класс, предназначенный для обработки путей к файлам.
Я не видел этот конкретный класс, но я предполагаю, что PF
это означает «PrivateFramework» точно так же, NS
как «NeXTSTEP» и CF
означает «CoreFoundation». Скорее всего, это внутренний класс, который мы не должны легко видеть.
(Меня забавляет, что они неправильно написали «кэшированный».)
Вы тестируете кластер классов с помощью теста класса следующим образом:
[pfCashedNumerObject class] == NSNumber
Все внутренние классы Class-clusters идентифицируются как один и тот же общедоступный класс.