2012-06-07 3 views
2

Download my source for reference!Xcode: с CoreData Создание сценария

Я новичок в разработке IOS и я пытаюсь учиться самостоятельно ... Мне нужна помощь

Во-первых, я получаю сообщение об ошибке, когда переключение на "культуры безопасности Master View" ... Storyboard

2012-06-07 11: 50: 54.720 SafetyCulture [1777: fb03] *** Нагрузочного приложения из-за неперехваченное исключение 'NSInternalInconsistencyException', причина: «+ entityForName: не мог определить местонахождение NSManagedObjectModel для лица имени„Event“»

Я не знаю, как решить эту проблему ...

Во-вторых, я хочу, чтобы создать запись с помощью двухступенчатый процесс ... и на «вопрос ...» VC, я хочу, чтобы пользователь ответил на 20 вопросов, но все они будут отформатированы одинаково, поэтому мне не нужны дополнительные xibs, do Я? Поэтому, когда он доходит до последнего вопроса, я хочу, чтобы «следующая» кнопка говорила «закончить» или «сохранить» ... должна быть простой?

Я очень хочу встать на ноги с помощью Xcode ... если вам нужна дополнительная информация, пожалуйста, дайте мне знать, и я сделаю все возможное!

+0

Не могли бы вы поделиться им с помощью [CloudApp] (http://itunes.apple.com/us/app/cloud/id417602904?mt=12&ls=1) или Dropbox? Я бы предпочел не подписаться на другой веб-сайт, и я думаю, что больше людей будет склонно скачать его легко. – Swizzlr

+1

Ваше желание - моя команда. https://www.dropbox.com/s/97fzpnxu3ej0giv/SafetyCulture.zip –

+0

Спасибо, человек! Смотрю сейчас ... Я люблю UIStoryboard. – Swizzlr

ответ

1

Я разыскал код, который бросает исключение:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext]; 

в методе - (NSFetchedResultsController *)fetchedResultsController, пользовательские сеттер для свойства одного и того же имени, который инициализирует один, если нет. Реальная проблема заключается в том, что в настоящее время нет self.managedObjectContext. Нигде в вашем коде контроллер master view не назначил управляемый объектObjectContext.

Самый простой способ сделать это, чтобы захватить его из AppDelegate, таким образом

#import "safetyCultureAppDelegate.h" //this needs to be at the top to make sure the compiler knows what you’re on about. 
... 
self.managedObjectContext = [(safetyCultureAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; //put this in the viewDidLoad, or wherever you can set it when the Master VC is created. 

Это было довольно легко решить с помощью контрольных точек, которые я призываю вас, чтобы узнать, как использовать, как они невероятно являются полезно с воспроизводимыми ошибками, подобными этим.

Что касается вашего второго вопроса, есть миллион способов кожи этой кошки. Нет ничего плохого в создании кучки сцен и прокручивании между ними и дать им общий «класс вопросов». Это выглядело бы неплохо, и не было бы большого количества кода. Производительность не будет проблемой.

Это означает, что если вы хотите сделать это программно, используйте NSArray из NSDictionaries, каждый из которых задает вопрос и возможные ответы, и запрограммируйте контроллер для загрузки их из массива при ударе назад или вперед, помня, что нужно сохранять , Однако, если вопросы статичны, я действительно призываю вас использовать подход «Раскадровка». Гораздо менее странно.

Точки останова и сегменты - все хорошо и хорошо, но прямо сейчас я призываю вас приготовить кофе, получить печенье и прочитать обложку Core Data Programming Guide. Вы найдете документацию Apple очень доступной.

Если вы на самом деле новичок в этом, следуйте this advice. Это сработало для меня.

1

Если вы ADING основных данных в существующем проекте, то следуйте инструкциям в этой ссылке Adding Core Data Existing iPhone Projects

Для второго вопроса: Вам не нужно, чтобы добавить больше вида, просто использовать UIScrollView и расширить его так же, как тебе нужно.

0

Я не верю, что это проблема раскадровки. У вашего контроллера представления должен быть установлен стек основных данных. Убедитесь, что код, который вызывает entityForName:, имеет действительный номер NSManagedObjectContext.

Стек основных данных - это несколько объектов, которые необходимо выполнить с помощью Core Data. В стандартных шаблонах Xcode, созданных с помощью Core Data, эти объекты настраиваются в делетете приложения.

«Базовый блок» данных ядра, если хотите, является объектом NSManagedObject. Вы моделируете объекты в инструменте моделирования, а затем генерируете классы из моделей с помощью Xcode. Эти сгенерированные классы являются подклассами NSManagedObjectObject.

Обычно вы взаимодействуете с NSManagedObjectContext. NSManagedObjectContext похож на «блокнот», где вы вносите изменения в NSManagedObjects. Контекст - это вершина стека основных данных, созданная делегатом приложения.

Когда вы создаете новый проект в Xcode, вам будет предложено ввести несколько фрагментов информации, в том числе использовать Core Data. Если вы установите этот флажок, Xcode настроит ваш постоянный координатор магазина и ваш контекст управляемого объекта. Это основа вашего базового стека данных.

Как правило, вы можете передавать ссылки на контекст управляемого объекта приложения. (Вы не можете получить доступ к одному и тому же контексту из нескольких потоков. Основные данные и многопоточность - это отдельная глава.) Затем всякий раз, когда вы создаете экземпляр нового объекта, вы вставляете его непосредственно в контекст управляемого объекта.

Чтобы сохранить, вы вызываете сохранение контекста.

+0

Моше, не могли бы вы мне помочь? Как я уже сказал, я новичок в этом ... Я даже не уверен, что такое стек Core Data или как использовать NSManagedObjects ... или контексты ... –

+0

Добавил половину ответа, добавит более позднее, когда Я больше доступен. – Moshe