For example, when I pick by IID, if the IID exists then all the sprites will be picked.
I believe the problem is not with picking. When you load an image into a sprite, all sprite instances receive the same image. If you want to load different images to different instances, you have to use multiple animation frames. Say, if you have 10 sprites, create 10 empty frames and set a different frame for each instance.
By the way, if you want to pair each canvas with a sprite instance, you can add them to a container. This will simplify picking, creating and destroying.