How to check for authority to access photos?

I have a collectionview which is to load images from gallery

The first time app runs it always gets crashed because access is not given to use phtos .How to check for access in code??

override func viewDidLoad()
{
    super.viewDidLoad()
    self.navigationController?.navigationBar.barTintColor = UIColor.grayColor()
    let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil)

    var i = 0
    repeat
    {
        if (collection.count > 0)
        {
            if let first_Obj:AnyObject = collection.objectAtIndex(i)
            {
                self.assetCollection = first_Obj as! PHAssetCollection
            }
            i += 1
        }
    }while( i < collection.count)




    // Do any additional setup after loading the view.
}

 override func viewWillAppear(animated: Bool)
{
    if let layout = self.photoAlbum!.collectionViewLayout as? UICollectionViewFlowLayout{
        let cellSize = layout.itemSize

        self.assetThumbnailSize = CGSizeMake(cellSize.width, cellSize.height)
    }

    //fetch the photos from collection
    self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
    self.photoAlbum!.reloadData()


}

Upvotes: 0

Views: 117

Answers (1)

JAck
JAck

Reputation: 854

 if ALAssetsLibrary.authorizationStatus() == ALAuthorizationStatus.NotDetermined {
    self.navigationController?.navigationBar.barTintColor = UIColor.grayColor()
    let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil)

    var i = 0
    repeat
    {
        if (collection.count > 0)
        {
            if let first_Obj:AnyObject = collection.objectAtIndex(i)
            {
                self.assetCollection = first_Obj as! PHAssetCollection
            }
            i += 1
        }
    }while( i < collection.count)




    // Do any additional setup after loading the view.
}

 override func viewWillAppear(animated: Bool)
{
    if let layout = self.photoAlbum!.collectionViewLayout as? UICollectionViewFlowLayout{
        let cellSize = layout.itemSize

        self.assetThumbnailSize = CGSizeMake(cellSize.width, cellSize.height)
    }

    //fetch the photos from collection
    self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
    self.photoAlbum!.reloadData()

    }else {
    self.navigationController?.navigationBar.barTintColor = UIColor.grayColor()
    let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil)

    var i = 0
    repeat
    {
        if (collection.count > 0)
        {
            if let first_Obj:AnyObject = collection.objectAtIndex(i)
            {
                self.assetCollection = first_Obj as! PHAssetCollection
            }
            i += 1
        }
    }while( i < collection.count)




    // Do any additional setup after loading the view.
}

 override func viewWillAppear(animated: Bool)
{
    if let layout = self.photoAlbum!.collectionViewLayout as? UICollectionViewFlowLayout{
        let cellSize = layout.itemSize

        self.assetThumbnailSize = CGSizeMake(cellSize.width, cellSize.height)
    }

    //fetch the photos from collection
    self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
    self.photoAlbum!.reloadData()

    }

write this in viewWillAppear() or viewDidLoad()

Upvotes: 1

Related Questions