2016-08-11 3 views
0

У меня есть коллекция, которая должна загружать изображения из галереиКак проверить права доступа к фотографиям?

При первом запуске приложения она всегда разбивается, потому что доступ не предоставляется для использования phtos. Как проверить доступ в коде ???

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() 


} 

ответ

1
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() 

    } 

написать это в viewWillAppear() или viewDidLoad()

+0

ваш viewWillAppear()/viewDidLoad() код должен быть в это, чтобы предотвратить крах – JAck

+0

как изменить мой viewWillAppear() или viewDidLoad () –

+0

проверить мой обновленный ответ, вы должны сделать это – JAck