Let's go by parts!
I'm trying to implement Drag and Drop
in my UICollectionViewController
.
The datasource for the UICollectionView
is an array
of a custom Model Struct
I've created.
As required I have set my collectionView.dragDelegate = self
and by doing so I've implemented the required protocol function
itemsForBeginning session: UIDragSession...
Here's where my problem starts:
struct Model {
// some variables
// Some initializations
}
var myModelDatasource: [Model] = [model1, model2, model3, ...] // it's a simple case example
func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
let item = myModelDatasource[indexPath.row]
let itemProvider = NSItemProvider(object: item)
let dragItem = UIDragItem(itemProvider: itemProvider) // <-- ERROR HERE, Even If i force cast as NSItemProviderWriting
dragItem.localObject = item
return [dragItem]
}
I cannot create a dragItem
because of my model doesn't conform to type NSItemProviderWriting
.
If I force a datasource to be of type String
and cast the item to NSString
it works, but not with my struct Model
.
Does anyone know how to resolve this issue?