0
我有一個圖像數組var images: NSArray! = []
,它使用自定義UIImagePicker最多收集5個圖像。我需要將圖片發送到火力地堡,但所以我把數組的每個索引到自己的UIImage火力地堡不接受數組:使用Firebase自定義多個UIImagePicker
let imageOne = images[0] as? UIImage
let imageTwo = images[1] as? UIImage
let imageThree = images[2] as? UIImage
let imageFour = images[3] as? UIImage
let imageFive = images[4] as? UIImage
然後我創建了一個功能來發送圖像到火力點:
func uploadImage(image: UIImage){
var randomName = randomStringWithLength(length: 5)
let imageData = UIImageJPEGRepresentation(imageOne!, 1.0)
let imageDatas = UIImageJPEGRepresentation(imageTwo!, 1.0)
let imageDataThree = UIImageJPEGRepresentation(imageThree!, 1.0)
let imageDataFour = UIImageJPEGRepresentation(imageFour!, 1.0)
let imageDataFive = UIImageJPEGRepresentation(imageFive!, 1.0)
let uploadRef = FIRStorage.storage().reference().child("images/\(randomName).jpg")
guard let ImageData = imageData else { return }
uploadRef.put(ImageData, metadata: nil) { metadata,
error in
if error == nil {
print("successfully uploaded Image")
self.imageFileName = "\(randomName as String).jpg"
randomName = randomStringWithLength(length: 5)
let uploadRef2 = FIRStorage.storage().reference().child("images/\(randomName).jpg")
guard let Imagedatas = imageDatas else { return }
uploadRef2.put(Imagedatas, metadata: nil) { metadata,
error in
if error == nil {
self.imageFileNameTwo = "\(randomName as String).jpg"
} else{
print("Error uploading image")
}
randomName = randomStringWithLength(length: 5)
let uploadRef3 = FIRStorage.storage().reference().child("images/\(randomName).jpg")
guard let imageDataThrees = imageDataThree else { return }
uploadRef3.put(imageDataThrees, metadata: nil) { metadata,
error in
if error == nil {
self.imageFileNameThree = "\(randomName as String).jpg"
} else{
print("Error uploading image")
}
randomName = randomStringWithLength(length: 5)
let uploadRef4 = FIRStorage.storage().reference().child("images/\(randomName).jpg")
guard let imageDataFours = imageDataFour else { return }
uploadRef4.put(imageDataFours, metadata: nil) { metadata,
error in
if error == nil {
self.imageFileNameFour = "\(randomName as String).jpg"
} else{
print("Error uploading image")
}
randomName = randomStringWithLength(length: 5)
let uploadRef5 = FIRStorage.storage().reference().child("images/\(randomName).jpg")
guard let imageDataFives = imageDataFive else { return }
uploadRef5.put(imageDataFives, metadata: nil) { metadata,
error in
if error == nil {
AppDelegate.instance().dismissActivityIndicator()
self.imageFileNameFive = "\(randomName as String).jpg"
} else{
print("Error uploading image")
}
let postObject: Dictionary<String, Any> = [
"image" : self.imageFileName,
"imageTwo" : self.imageFileNameTwo,
"imageThree" : self.imageFileNameThree,
"imageFour" : self.imageFileNameFour,
"imageFive" : self.imageFileNameFive,
]
FIRDatabase.database().reference().child("posts").child(self.loggedInUser!.uid).child(key).setValue(postObject)
}}}}} else{
print("Error uploading image")
}}
}
if let pickedImageFirst = imageOne,
let pickedImageSecond = imageTwo,
let pickedImageThird = imageThree,
let pickedImageFour = imageFour,
let pickedImageFive = imageFive {
uploadImage(image: pickedImageFirst)
該功能要求用戶總是5張圖像,否則會崩潰。但是,我希望它是可選的。這樣用戶可以選擇一個或五個圖像。現在,如果我選擇少於5個圖像,我得到這個崩潰:
終止應用程序,由於未捕獲的異常'NSRangeException',原因:' - [__ NSSingleObjectArrayI objectAtIndex:]:index 1 beyond bounds [0..0] '
當我這樣做時,我得到了一個警衛讓我們imageData = imageData其他{返回}行「使用未解析的標識符'imageData' – juelizabeth
您需要提供更多的代碼,這裏沒有人是心靈讀者。試圖幫助你假設你已經定義了imageData,因爲你在你的代碼中引用它。 – Mozahler
@Mozahler imageData被定義我把它包含在我原來的問題中'let imageData = UIImageJPEGRepresentation(imageOne !, 1.0)' – juelizabeth