---
title: URLSessionDataDelegate
framework: foundation
role: symbol
role_heading: Protocol
path: foundation/urlsessiondatadelegate
---

# URLSessionDataDelegate

A protocol that defines methods that URL session instances call on their delegates to handle task-level events specific to data and upload tasks.

## Declaration

```swift
protocol URLSessionDataDelegate : URLSessionTaskDelegate
```

## Mentioned in

Fetching website data into memory Accessing cached data

## Overview

Overview Your session delegate should also implement the methods in the URLSessionTaskDelegate protocol to handle task-level events that are common to all task types, and methods in the URLSessionDelegate protocol to handle session-level events. note: A URLSession object need not have a delegate. If no delegate is assigned, when you create tasks in that session, you must provide a completion handler block to obtain the data. Completion handler blocks are primarily intended as an alternative to using a custom delegate. If you create a task using a method that takes a completion handler block, the delegate methods for response and data delivery are not called.

## Topics

### Handling task life cycle changes

- [urlSession(_:dataTask:didReceive:completionHandler:)](foundation/urlsessiondatadelegate/urlsession(_:datatask:didreceive:completionhandler:).md)
- [URLSession.ResponseDisposition](foundation/urlsession/responsedisposition.md)
- [urlSession(_:dataTask:didBecome:)](foundation/urlsessiondatadelegate/urlsession(_:datatask:didbecome:)-60op5.md)
- [urlSession(_:dataTask:didBecome:)](foundation/urlsessiondatadelegate/urlsession(_:datatask:didbecome:)-7nqzu.md)

### Receiving data

- [urlSession(_:dataTask:didReceive:)](foundation/urlsessiondatadelegate/urlsession(_:datatask:didreceive:).md)

### Handling caching

- [urlSession(_:dataTask:willCacheResponse:completionHandler:)](foundation/urlsessiondatadelegate/urlsession(_:datatask:willcacheresponse:completionhandler:).md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [URLSessionDelegate](foundation/urlsessiondelegate.md)
- [URLSessionTaskDelegate](foundation/urlsessiontaskdelegate.md)

## See Also

### Adding data tasks to a session

- [dataTask(with:)](foundation/urlsession/datatask(with:)-10dy7.md)
- [dataTask(with:completionHandler:)](foundation/urlsession/datatask(with:completionhandler:)-52wk8.md)
- [dataTask(with:)](foundation/urlsession/datatask(with:)-7jpys.md)
- [dataTask(with:completionHandler:)](foundation/urlsession/datatask(with:completionhandler:)-e6xv.md)
- [URLSessionDataTask](foundation/urlsessiondatatask.md)
