I am trying to use the Firebase Storage documented example code :
// Reference to an image file in Firebase Storage
let reference = storageRef.child("images/stars.jpg")
// UIImageView in your ViewController
let imageView: UIImageView = self.imageView
// Placeholder image
let placeholderImage = UIImage(named: "placeholder.jpg")
// Load the image using SDWebImage
imageView.sd_setImage(with: reference, placeholderImage: placeholderImage)
adapted like so in my app:
func setImage(_ picid: Int32){
let imagesRefs = Constants.FirebaseConfig.storageRef.child("images/thumbs/\(getuid())/thumb_\(picid).jpg");
let placeholderImage = UIImage(named: "placeholder.jpg")
profilePicIV.sd_setImage(with: imagesRefs, placeholderImage: placeholderImage)
}
but the method sd_setImage
was not found by xcode so I thought I had to update my podfile with the pod 'FirebaseUI/Storage' but after tinkering with my podfile I get this error:
pod update
Update all pods
Updating local specs repositories
$ /usr/bin/git -C /Users/myname/.cocoapods/repos/master fetch origin --progress
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 18 (delta 12), reused 7 (delta 4), pack-reused 0
From https://github.com/CocoaPods/Specs
24df16553de..7cae8225fce master -> origin/master
$ /usr/bin/git -C /Users/myname/.cocoapods/repos/master rev-parse --abbrev-ref HEAD
master
$ /usr/bin/git -C /Users/myname/.cocoapods/repos/master reset --hard origin/master
HEAD is now at 7cae8225fce [Add] MixedRealityKit 0.1.6
Analyzing dependencies
[!] Unable to satisfy the following requirements:
- `TwitterCore (~> 2.8.0)` required by `Podfile`
- `TwitterCore (>= 3.0.0)` required by `TwitterKit (3.0.0)`
- `FirebaseUI` required by `Podfile`
Specs satisfying the `FirebaseUI` dependency were found, but they required a higher minimum deployment target.
My pods file is like so though I have tried other pod combinations but to the same or worse effect:
# Uncomment the next line to define a global platform for your project
platform :ios, '10.3'
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
target 'StrengthStandards' do
#Pods for StrengthStandards
pod 'Firebase'
pod 'Firebase/Core'
#pod 'Firebase/Auth'
#pod 'FirebaseUI/Google'
#pod 'Firebase/Crash'
#pod 'Firebase/RemoteConfig'
pod 'FirebaseUI'
pod 'Firebase/Database'
#pod 'FirebaseUI/Database'
#pod 'Firebase/Storage'
pod 'FirebaseUI/Storage'
pod 'TwitterCore', '~>2.8.0'
target 'StrengthStandardsTests' do
inherit! :search_paths
# Pods for testing
end
target 'StrengthStandardsUITests' do
inherit! :search_paths
# Pods for testing
end
end
What am I doing wrong? Also my xcode gives the error No such module 'FirebaseAuthUI'
on my import FirebaseAuthUI
line.
Before this problem I had my Firebase Database and Firebase Auth working.
I am using Xcode 8.3.3 and Swift 3, on MacOS 10.12.6
Thanks
PS: making some progress - now my podfile is:
# Uncomment the next line to define a global platform for your project
platform :ios, '10.3'
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
target 'StrengthStandards' do
use_frameworks!
#Pods for StrengthStandards
#pod 'Firebase'
pod 'Firebase/Core'
#pod 'Firebase/Auth'
pod 'FirebaseUI/Auth'
pod 'FirebaseUI/Google'
#pod 'FirebaseUI/Google'
#pod 'Firebase/Crash'
#pod 'Firebase/RemoteConfig'
#pod 'FirebaseUI'
pod 'Firebase/Database'
#pod 'FirebaseUI/Database'
#pod 'Firebase/Storage'
pod 'FirebaseUI/Storage'
pod 'TwitterCore', '~>2.8.0'
target 'StrengthStandardsTests' do
inherit! :search_paths
# Pods for testing
end
target 'StrengthStandardsUITests' do
inherit! :search_paths
# Pods for testing
end
end
and I no longer get the dependancy issues however, xcode now tells me that the method call
profilePicIV.sd_setImage(with: imagesRefs, placeholderImage: placeholderImage)
is wrong:
/Users/myname/Dev/IOSDev/StrengthStandards/StrengthStandards/Settings.swift:325:40: Cannot convert value of type 'StorageReference' to expected argument type 'URL?'
Seems to work now though I admit I'm not sure if it is exactly the way it is supposed to be done. For anyone interested here is what I have so far: Podfile:
# Uncomment the next line to define a global platform for your project
platform :ios, '10.3'
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
target 'StrengthStandards' do
use_frameworks!
pod 'Firebase/Core'
pod 'FirebaseUI/Auth'
pod 'FirebaseUI/Google'
pod 'Firebase/Database'
pod 'FirebaseUI/Storage'
pod 'TwitterCore', '~>2.8.0'
pod 'SDWebImage/Core'
target 'StrengthStandardsTests' do
inherit! :search_paths
# Pods for testing
end
target 'StrengthStandardsUITests' do
inherit! :search_paths
# Pods for testing
end
end
and here is my function:
import SDWebImage
func setImage(_ picid: Int32){
let imagesRefs = Constants.FirebaseConfig.storageRef.child("images/thumbs/\(Constants.getUID())/thumb_\(picid).jpg");
imagesRefs.downloadURL { url, error in
if let error = error {
// Handle any errors
print("Error getting url for profile pic: \(error)")
} else {
// Get the download URL for 'images/stars.jpg'
let placeholderImage = UIImage(named: "placeholder.jpg")
self.profilePicIV.sd_setImage(with: url, placeholderImage: placeholderImage)
}
}
}