There are three possible options that, in my opinion, are relevant to water modeling.
1) As mentioned in the comments, you can try using SKFieldNode (iOS 8+). But from personal experience, the node field didn’t actually do this for me, because you don’t get much control over your simulation unless you configure it strongly, in which case you could just do your own calculations from scratch and reduce the complexity .
2) You can adjust the linear and rotational attenuation of your sprite in water. In fact, even an apple mentions this in a quote from its documentation. However, this will not give you buoyancy.
The linearDamping and angularDamping properties are used to calculate the friction of a body as it moves around the world. For example, it can be used to simulate the friction of air or water.
3) Perform the calculations yourself. In the update method, check when the body introduces you “water”, and when possible, you can calculate the viscosity and / or buoyancy and adjust the speed of your node accordingly. This, in my opinion, is the best option, but also more difficult.
Change I just wrote a quick example of option 3 in Swift. I think this is what you are looking for. I added factor constants at the top so you can tweak it to get exactly what you want. The movement is applied dynamically, so it will not interfere with your current speed (i.e. you can control your character in the water). Below is the code for the scene and gif. Keep in mind that delta time is considered to be 60 frames per second (1/60) and there is no speed clamp. You may or may not want these features depending on your game.

Swift
class GameScene: SKScene {
Objective-c
Epic byte
source share