sizeof anElement->id
позволяет получить размер указателя!
fgets(anElement->id,sizeof anElement->id,stdin);
// ^^^^^^^^^^^^^^^^^^^^
// size of a pointer
// probably 4 or 8
Вы должны выделить достаточно места и прочитать столько байтов
anElement->id = malloc(100); // error checking omitted for brevity
fgets(anElement->id, 100, stdin); // error checking omitted for brevity
// use anElement->id
free(anElement->id);
память, когда она вам больше не нужна.
Вам нужен источник данных — AFAIK, Вы не можете заставить это произойти с одной только Привязкой.
Незаконченный Создатель Adium Xtras, который находится под лицензией BSD, включает контроллер массива, который можно установить как источник данных для получения перетаскивания в Приводимом в действие привязкой табличном представлении.
Это требование не может относиться к NSOutlineView и NSTreeController. Я не попробовал это.
Страница, с которой Вы связались, довольно соглашается с тем, что необходимо сделать. В таблице источник данных A, реализация registerForDraggedTypes:
и tableView:writeRowsWithIndexes:toPasteboard:
помещать некоторых частных TableAPasteboardType
данные по области монтажа.
В схеме источник данных B реализуйте те же два метода и поместите некоторых частных OutlineBPasteboardType
данные по области монтажа.
Наконец, реализация tableView:validateDrop:proposedRow:proposedDropOperation:
и tableView:acceptDrop:row:dropOperation:
проверять область монтажа на также TableAPasteboardType
или OutlineBPasteboardType
и внесите соответствующие изменения в свою связанную модель, завися.
Это довольно просто, после того как Вы просто пашете в и делаете это.