2017-02-13 4 views
0

По сути, я пытаюсь смоделировать персонажа с рюкзаком с элементами из заранее определенного списка. До сих пор я придумал это.Как смоделировать схему «Character-Inventory-Item» в Core Data

Core Data Model

Моя главная проблема заключается в понимании того, как основные данные обрабатывает массивы/списков и т.д. Из того, что я прочитал, что определяется соотношением, простой характер - отношения вещь, что я первый придумал, но Я хотел иметь возможность добавлять настраиваемые описания для каждого элемента, выбранного из предварительно определенных элементов (которые могут быть добавлены пользователем во время выполнения). У каждого персонажа будет только один «рюкзак» со списком предметов с пользовательскими описаниями и пользовательскими «суммами» или счетчиком. Этот рюкзак теоретически может иметь 2 одинаковых элемента, но с разными описаниями, поэтому наличие счетчика 2 для одного элемента не всегда будет подходящим. Кроме того, существует возможность для нескольких профилей персонажей, поэтому элементы могут принадлежать нескольким различным рюкзакам, но опять же с разницей в описании/подсчете и т. Д.

Так что, я думаю, моя основная проблема заключается в понимании того, как основные данные обрабатывают списки , И как я мог бы правильно решить эту проблему, чтобы обеспечить отношение «character-backpack-item».

Спасибо!

ответ

0

Короткие и быстро очистки:

1: Добавьте свойства от item к вашему BackPackItem

2: Удалите item объект

Этот рюкзак теоретически может иметь 2 одного и того же позиций, но с различного описания

3: Добавьте свойство backpackItemID к вашему BackPackItem и присвойте ему уникальный идентификатор каждый раз, когда вы создаете объект BackPackItem. Таким образом, вы можете иметь несколько элементов с одинаковой информацией, но с разными идентификаторами. (Не требуется, но держит вещи более чистые, на мой взгляд, делать, как вы хотите здесь)

Наконец:

Теперь все, что вам нужно сделать, когда вы запрашиваете должен принести Character примитив это название пример. И в вашем NSFetchRequest вы добавляете BackPackItem (связанный с BackPackItems как отношение называется) как relationshipKeyPathsForPrefetching, и все associatedBackPackItems будут автоматически загружены для вас.

Теперь предположим, что вы получили Character, и хотите получить доступ к его BackPackItem ->character.associatedBackpackItems дает вам все предметы, связанные с этим персонажем.

+0

Thankyou, может потребоваться некоторое время, чтобы проверить все это, так как я не начал писать какой-либо связанный код, но это звучит хорошо! Я сейчас буду галочкой, поэтому я не трачу ни одного времени elses :) – mccal99

+0

@ mccal99 NP, кажется, очень простая настройка у вас есть, поэтому это должен быть лучший метод. Наличие третьего отношения просто делает вещи действительно грязными для вас. Старайтесь держать вещи простыми, и у вас будет чистый код и меньше головной боли. Я сделал редактирование BTW, вам не нужно переименовывать в itemS, элемент один более корректен. –

Смежные вопросы