<!--
{
  "availability" : [
    "iOS: 10.0.0 -",
    "iPadOS: 10.0.0 -",
    "macCatalyst: 13.1.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UICloudSharingController/availablePermissions",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(cs)UICloudSharingController(py)availablePermissions"
  },
  "title" : "availablePermissions"
}
-->

# availablePermissions

A combination of permission and access options made available to the user when viewing screens presented by the CloudKit sharing controller.

```
var availablePermissions: UICloudSharingController.PermissionOptions { get set }
```

## Discussion

The [`UICloudSharingController`](/documentation/UIKit/UICloudSharingController) user interface displays permission options to the user. The user selects the options based on how the data should be shared. For instance, the user can decide to share the data publicly or privately by selecting the corresponding option.

Setting the [`availablePermissions`](/documentation/UIKit/UICloudSharingController/availablePermissions) property on [`UICloudSharingController`](/documentation/UIKit/UICloudSharingController) to one or more [`UICloudSharingController.PermissionOptions`](/documentation/UIKit/UICloudSharingController/PermissionOptions) options tells the controller which options to present to the user. If you want, for example, to let the user decide whether to share the data publicly or privately, you specify the [`allowPublic`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowPublic) and [`allowPrivate`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowPrivate) options for [`availablePermissions`](/documentation/UIKit/UICloudSharingController/availablePermissions). This tells the controller to display both options to the user.

Specifying no options for [`availablePermissions`](/documentation/UIKit/UICloudSharingController/availablePermissions) tells [`UICloudSharingController`](/documentation/UIKit/UICloudSharingController) to display all options to the user.

```objc
// Allow only the invited participants and read/write permission options.
[cloudSharingController setAvailablePermissions:UICloudSharingPermissionAllowPrivate | UICloudSharingPermissionAllowReadWrite];
```

### Display groupings

The [`UICloudSharingController`](/documentation/UIKit/UICloudSharingController) displays the permission options to the user based on the options set in the [`availablePermissions`](/documentation/UIKit/UICloudSharingController/availablePermissions) property. The user interface displays the options in two groups, access options group and permission options group. The [`allowPublic`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowPublic) and [`allowPrivate`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowPrivate) options control the display of the access options group, while the [`allowReadOnly`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowReadOnly) and [`allowReadWrite`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowReadWrite) options control the display of the permission options group.

### Complementary options

The [`allowPrivate`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowPrivate) and [`allowPublic`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowPublic) options are complementary. If you exclude one, the access options group is omitted from the [`UICloudSharingController`](/documentation/UIKit/UICloudSharingController) user interface, and the [`share`](/documentation/UIKit/UICloudSharingController/share) access setting defaults to the included option. This prevents the user from changing the access rights to the share. For instance, to always force a private share, you include the [`allowPrivate`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowPrivate) access option while excluding [`allowPublic`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowPublic) when setting the [`availablePermissions`](/documentation/UIKit/UICloudSharingController/availablePermissions) property. The controller sets the share’s access rights to private and removes the access options group from the user interface, preventing the user from changing the setting.

Similarly, [`allowReadOnly`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowReadOnly) and [`allowReadWrite`](/documentation/UIKit/UICloudSharingController/PermissionOptions/allowReadWrite) complement each other. Excluding one removes the permission options group from the user interface, and the [`share`](/documentation/UIKit/UICloudSharingController/share) permission setting defaults to the included [`UICloudSharingController.PermissionOptions`](/documentation/UIKit/UICloudSharingController/PermissionOptions) option.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)