Номер Coredata возвращает номер класса PFCachedNumber

#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 идентифицируются как один и тот же общедоступный класс.