I think the factoring of these three classes is confusing. In trying to have all the common functionality in the parent, there's a lot of jumping around classes when trying to work out what's what.

I'd have properly typed (Datastore, NSURL) source and target properties in the subclasses rather than the local and remote designations here -- then the variable names hint at the direction changes will flow. This matches the Java code too.

Pushing filter down in the the subclass also allows you to properly type it.

As it currently stands these classes are not very self-describing, because of the way the parent class's properties are forced into being very generic, both in name and, sometimes, type.