9

kullanarak "Fotoğraf Akım" albümünden bir fotoğraf seçerken her zaman nil. Albüme bir öğe seçmek için hariç, fotoğraf ve videonun her ikisi içinPHAsset fetchAssetsWithALAssetURLs döndü: Ben kullanıcı uygulamada paylaşmak için bir fotoğraf veya video seçmesine izin vermek bir <code>UIImagePickerController</code> kullanıyorum UIImagePickerController

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 

PHAsset *asset; 
if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.movie"]) { 
    // Video 
    asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject]; 

} else if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.image"]) { 
    // Photo 
    PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil]; 
    asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject]; 
    } 
} 

if statements çalışma cezası ikisi: kullanıcı kendi Kütüphane'de bir medya öğesi seçtiğinde, ben UIImagePickerController's temsilci yöntemlerinden birinde bu kodu çalıştırmak başlıklı "My Photo Stream".

"My Photo Stream"'dan bir öğe seçtiğinizde, PHAsset döndürülen her zaman nil'dur. ALAssetsLibrary assetForURL: always returning nil for photos in "My Photo Stream" in iOS 8.1

Fakat yukarıdaki bağlantı artık Apple tarafından önerilmektedir AssetsLibrary çerçevesini kullanır:

"iOS in

bir çalışma çözeltisi ile bir cevap gibi görünüyor şu soruyu bulundu 8.0 ve daha sonra, Öğeler Kitaplık çerçevesi yerine Fotoğraflar çerçevesini kullanın. Fotoğraf çerçevesi, kullanıcının fotoğraf kitaplığı ile çalışmak için daha fazla özellik ve daha iyi performans sağlar. Bkz. Fotoğraflar Çerçeve Başvurusu. "

ben "My Photo Stream" albümde medya öğeleri için PHAsset nesneleri döndürmek için gerekiyor. Şu anda, sözlüğünde UIImagePickerController tarafından döndürülen başvuru URL'si, konsola giriş yapan geçerli bir URL'dir, ancak bu URL'yi kullanırken, geçerli bir PHAsset nesnesi hiçbir zaman iade edilmez. Bir böcek var ve en son iOS 8.2x betalar sabit gibi görünüyor

assets-library://asset/asset.JPG?id=DCF5C6E5-B4F4-4E61-9C4B-CC63E104BF2B&ext=JPG 

cevap

1

: Burada

didFinishPickingMediaWithInfo: temsilci yöntemin bilgileri sözlükte döndürülen bir referans URL bir örnektir.

+0

Bunu iOS 8.2 beta 5'te çalıştırdığımı onaylıyorum. – Kyle

+0

Sadece IOS 8.2'yi güncellemeye başladım, maalesef hala çalışmıyor. – wgr

+0

hala 8.4.1 ile bile bir sorun gibi görünüyor. – mahboudz

1

zaman inanılmaz ama iOS 10.3.3 itibariyle

iOS 10 örtmek için ve aşağıdaki I ile PHAsset ait fetchAssets kullanıyorum ... hata devam ederse ve sadece iOS 11 tarafından düzeltildi gibi görünüyor bilgi sözlüğü didFinishPickingMediaWithInfo temsilci yönteminden döndürdü:

PHAsset.fetchAssets(withALAssetURLs: [info["UIImagePickerControllerReferenceURL"] as! URL], options: nil) 

bu sonuçların dizisi döndürür unutmayın.

+0

Kodunuz orijinal sorudakiyle aynı değil mi? – Theo