Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
1.2k kez görüntülendi
ios development kategorisinde tarafından

Şu kodları* kullanarak, projeme eklediğim resimleri kullanıcıların fotoğraf galerilerine benim belirlediğim bir Albüm ismiyle kaydetmelerini sağlıyorum.

https://gist.github.com/burhanaksendir/498079a9a4c60c66b52c

Yaşadığım sorun özetle şu:

savePhotoCustomAlbumName  çalıştığında belirtilen isimle yeni albüm oluşturuluyor ve fotoğraf bu albümün içerisine kaydediliyor. 

Ancak Kullanıcı daha sonra bu albümü sildiğinde,  bu belirttiğim fonksiyon aynı isimle yeniden bir albüm oluşturamıyor.  Herhangi bir hata da döndürmüyor. Hatanın nedenini  bu yüzden bulamıyorum ve düzeltemiyorum.

1 cevap

0 oy
tarafından
tarafından seçilmiş
 
En İyi Cevap

verdiğiniz örneği test ettim ama bir problemle karşılaşmadım.
başarılı bir şekilde albüm oluşturuluyor ve imaj içerisine kaydediliyor.
daha sonra albümü silip yeniden imajı kaydettiğimde de albüm yenide oluşturuluyor.
bir problem göremedim kısacası.

tarafından
Ben gerçek cihazda test edince bu sorunla karşılaştım.
Xcode 6.3.2 iOS 8.3
smulatörde sorun olmuyor ama iPhone 4S cihazımda bahsettiğim sorunla karşılaşıyorum.
tarafından
ios 7.1 iphone5'de test ettim ben de.
ios8'le ilgili olabilir emin olamadım.
hata olmuyor demişsiniz, o halde
adım adım log tutun kodun işleyiş sırasında.
tarafından
Log tuttum ancak bir hata mesajı alamadım. Galiba iOS 8.3 ile ilgili bir bug söz konusu. Başka bir alternatifim var mı bu işi assetsLibrary ile yapma dışında ?
tarafından
evet, merak edip biraz daha araştırınca aynı problemin bahsedildiği bir stackowerflow sayfasına denk geldim.
http://stackoverflow.com/questions/26003211/assetslibrary-framework-broken-on-ios-8

öyle görünüyorki ios8'de AssetsLibrary framework'unde bir sıkıntı oluşuyor.
ilgili sayfada bu problemin ios8 de üstesinden gelmek için yapılmış alternatifleri görebilirsiniz.
tarafından
Sağolun. İnceledim. Swifte çevirme konusunda yardımcı olur musunuz bu kodları:

https://gist.github.com/anonymous/6ff056d4bf29f0866866
tarafından
şöyle bir şey iş görür basitçe,

denedim çalışıyor.


önce bir versiyon chceker'la ios sürümünü kontrol edin.
eğer ios8 ve üzeriyse addImage methodu içerisinde önce PHPhotoLibrary'i kullanarak bir albüm oluşturun.


Photos framework'ünü import etmeyi unutmayın, eğer ios7'de PHPhotoLibrary yüzünden çökme yaşarsanız, targets / Build phases / Link Binary With Libraries listesinde eklediğiniz photos framework'unu optional yapın.


import Photos


private func SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version: String) -> Bool {
        return UIDevice.currentDevice().systemVersion.compare(version,
            options: NSStringCompareOptions.NumericSearch) != NSComparisonResult.OrderedAscending
    }
    
    //method to add Image to Particular Album
    func addImage(image:UIImage, metadata:NSDictionary, toAlbum albumName:String, handler:CompletionHandler){
        if SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO("8.0.0") {
            PHPhotoLibrary.sharedPhotoLibrary().performChanges({
                var createAlbumRequest:PHAssetCollectionChangeRequest = PHAssetCollectionChangeRequest.creationRequestForAssetCollectionWithTitle(albumName)
                }, completionHandler: { success, error in
                    if success {
                        println("album created for ios8")
                    }
            })
        }
        
        library?.addAssetsGroupAlbumWithName(albumName, resultBlock: {(group:ALAssetsGroup!) -> Void in
            println("Album Created:=  \(albumName)")
            /*-- Find Group --*/
            var groupToAddTo:ALAssetsGroup?
            self.library?.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupAlbum),
                usingBlock: { (group:ALAssetsGroup?, stop:UnsafeMutablePointer<ObjCBool>) -> Void in
                    if(group != nil){
                        if group!.valueForProperty(ALAssetsGroupPropertyName) as! String == albumName{
                            groupToAddTo = group
                            println("Group Found \(group!.valueForProperty(ALAssetsGroupPropertyName))")
                            self.library?.writeImageToSavedPhotosAlbum(image.CGImage, metadata:metadata as [NSObject : AnyObject], completionBlock: {(assetURL:NSURL!,error:NSError!) -> Void in
                                if(error == nil){
                                    self.library?.assetForURL(assetURL,
                                        resultBlock: { (asset:ALAsset!) -> Void in
                                            var yes:Bool? = groupToAddTo?.addAsset(asset)
                                            if (yes == true){
                                                handler(success: true)
                                            }
                                        },
                                        failureBlock: { (error2:NSError!) -> Void in
                                            println("Failed to add asset")
                                            handler(success: false)
                                    });
                                }
                            });
                        }
                    } /*Group Is Not nil*/
                },
                failureBlock: { (error:NSError!) -> Void in
                    println("Failed to find group")
                    handler(success: false)
            });
            
            }, failureBlock: { (error:NSError!) -> Void in
                println("Failed to create \(error)")
                handler(success: false)
        });
    }
tarafından
İşte bu harika. Teşekkür ederim.
...