Исправленная собственность работает в iOS5, но не iOS6

У меня серьезная проблема в моей базе данных CoreData. Я создал связь «Один ко многим» между двумя таблицами и добавил в таблицу добавленное свойство, содержащее все уникальные значения. Весь код работает как ожидается в iOS 5, но в iOS 6 я получаю следующее сообщение об ошибке:

Причина: «[<_NSObjectID_48_0 0xb25c3b0> valueForUndefinedKey:]: этот класс не является ключевым значением, совместимым с кодировкой для key tour_id. ' * Первый стек бросить вызов: (0x31c7012 0x24a3e7e 0x324ffb1 0x1c445ed 0x1bb08db 0x1bb088d 0x1bceb17 0x1bfe746 0x21b74bb 0x21b7176 0x21b6e44 0x21b66f4 0x21b2d63 0x21b2a82 0x21b2850 0x21b2625 0x21b1e07 0x21b18f4 0x21b0a6d 0x21ae9c9 0x2201276 0x227b155 0x2201071 0x2880014 0x286fd5f 0x286faa3 0x220103b 0x2200e9e 0x21ae9c9 0x2209dfa 0x22375cf 0x2237a03 0x59de1 0x11c2753 0x11c2a7b 0x11d0590 0x11d85bd 0x11d8eab 0x11d94a3 0x11d9098 0x1534da3 0x1526ad9 0x1526b54 0x24b7705 0x10e2920 0x10e28b8 0x11a3671 0x11a3bcf 0x11a2d38 0x111233f 0x1112552 0x10f03aa 0x10e1cf8 0x34b3df9 0x34b3ad0 0x313cbf5 0x313c962 0x316dbb6 0x316cf44 0x316ce1b 0x34b27e3 0x34b2668 0x10df65c 0x291d 0x2845) Libc ++ abi.dylib: Terminate называется бросать исключение

Предикат, определенный для свойства Fetched:

($ FETCH_SOURCE.tour_id == tour_id) И ($ FETCH_SOURCE! = SELF)

Я определил массив, чтобы вернуть все, чтобы получить все значения в моем классе Tour.

Знаете ли вы о каких-либо проблемах с Fetched Properties wihtin iOS 6? Поскольку я не могу понять, что это работает без проблем в iOS 5, но не работает в iOS6.

См. Следующий код:

Ниже приведен код, как я извлекаю все записи:

- (void)loadRecordsFromCoreData { [self.managedObjectContext performBlockAndWait:^{ [self.managedObjectContext reset]; NSError *error = nil; NSFetchRequest *request = [[NSFetchRequest alloc] init]; NSEntityDescription *entityDescription = [NSEntityDescription entityForName:NSStringFromClass([Tour class]) inManagedObjectContext:self.managedObjectContext]; [request setEntity:entityDescription]; [request setResultType:NSManagedObjectResultType]; [request setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"tour_id" ascending:YES]]]; self.tours = [self.managedObjectContext executeFetchRequest:request error:&error]; }]; 

Ниже приведенный ниже код поддерживает NSManagedObjects, которые я определил:

— Тур

 #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> @class TourDetail; @interface Tour : NSManagedObject @property (nonatomic, retain) NSNumber * tour_id; @property (nonatomic, retain) NSString * background_url; @property (nonatomic, retain) NSString * summary; @property (nonatomic, retain) NSString * title; @property (nonatomic, retain) NSSet *tourdetails_tour; @property (nonatomic, retain) NSArray *tourDetails; @end @interface Tour (CoreDataGeneratedAccessors) - (void)addTourdetails_tourObject:(TourDetail *)value; - (void)removeTourdetails_tourObject:(TourDetail *)value; - (void)addTourdetails_tour:(NSSet *)values; - (void)removeTourdetails_tour:(NSSet *)values; @end } #import "Tour.h" #import "TourDetail.h" @implementation Tour @dynamic tour_id; @dynamic background_url; @dynamic summary; @dynamic title; @dynamic tourdetails_tour; @dynamic tourDetails; @end 

– Детали тура

 #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> @class Tour; @interface TourDetail : NSManagedObject @property (nonatomic, retain) NSNumber * id; @property (nonatomic, retain) NSNumber * tour_id; @property (nonatomic, retain) NSNumber * lattitude; @property (nonatomic, retain) NSNumber * longitude; @property (nonatomic, retain) NSString * audiofile; @property (nonatomic, retain) NSString * detail; @property (nonatomic, retain) NSString * title; @property (nonatomic, retain) Tour *tour_tourdetails; @end #import "TourDetail.h" #import "Tour.h" @implementation TourDetail @dynamic id; @dynamic tour_id; @dynamic lattitude; @dynamic longitude; @dynamic audiofile; @dynamic detail; @dynamic title; @dynamic tour_tourdetails; @end 

Любой совет, который вы можете предложить, будет очень благодарен 🙂 Как и любые примеры, которые вы можете иметь относительно того, как лучше всего определить выбранные свойства?

Спасибо, Майкл

One Solution collect form web for “Исправленная собственность работает в iOS5, но не iOS6”

Код, который вы используете здесь, не чист

 - (void)loadRecordsFromCoreData { [self.managedObjectContext performBlockAndWait:^{ [self.managedObjectContext reset]; NSError *error = nil; NSFetchRequest *request = [[NSFetchRequest alloc] init]; NSEntityDescription *entityDescription = [NSEntityDescription entityForName:NSStringFromClass([Tour class]) inManagedObjectContext:self.managedObjectContext]; [request setEntity:entityDescription]; [request setResultType:NSManagedObjectResultType]; [request setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"tour_id" ascending:YES]]]; self.tours = [self.managedObjectContext executeFetchRequest:request error:&error]; }]; 

На самом деле, это немного запутанно.

Вызов метода, который вызывает контекст управляемого объекта, который далее вызывает себя в синхронном блоке, который сбрасывается без причины, который устанавливает свойство «self.tours» вне блока. Все очень странно. Можете ли вы объяснить, почему вы это делаете?

Попробуйте это вместо этого.

 +(void)loadRecordsWithCompletion:(void(^)(NSArray *records, NSError *error))completion { NSManagedObjectContext *context; //Your context NSError *error; NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"attribute" ascending:YES]; NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"EntityName"]; [request setSortDescriptors:@[sortDesc]]; NSArray *records = [context executeFetchRequest:request error:&error]; completion(records, error); } 
  • Автоматически отправлять SMS на джейлбрейк iOS 6
  • Неверная версия iOS, показанная на тестовом полете
  • MKMapView не отображает плитки с максимальным увеличением - похоже, это относится к iOS 6.1.4
  • Как получить данные ячейки ячейки для iPhone 5?
  • Ошибка после обновления до xcode 4.6 и iOS 6.1 "используется как имя предыдущего параметра, а не как часть селектора"
  • Воспроизведение видео iOS с помощью MPMoviePlayerController
  • Interesting Posts

    HTML5 Воспроизведение аудио останавливается на 33 минуты на iOS

    Изменение размера ширины сайта в соответствии с шириной экрана iPad

    Хороший переход слайдов между полноэкранным и полноэкранным UIViewController

    Создать сеттер только в Swift

    Кнопка в UITableview изменяет текущую ячейку

    Как разрешить Дженкинсу использовать usr / bin / security?

    Cocoapods не может найти заголовок xcode 6

    Приложение Qt QML на IOS работает медленнее, JIT отключен

    основные данные в атрибуте массива хранения или работа с файлами или отношениями

    Приложение не может аутентифицироваться с помощью Facebook и Firebase после преобразования в синтаксис быстрого 3

    Различные ограничения для 3,5-дюймовых и 4-дюймовых

    XCTests являются flaky при запуске через командную строку или через jenkins

    Xcode попытался найти или создать соответствующие активы подписи и не смог этого сделать

    бросать обычное исключение в объекте c

    Как справиться с устаревшей версией офлайн-доступа в Facebook, когда вы используете токен как в приложении iOS, так и на сервере

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.