0
오류나 null 값을받지 못해서 뭔가 중요한 것을 놓치고있는 것처럼 느껴지지만 언제든지 내 이미지를 검색하려고 시도합니다. 존재하지 않기 때문에 returns ""
?스위프트 3 문서에 이미지 추가하기 및 검색하기
이 나는 이미지 데이터를 전달하고 방법입니다
URLSession.shared.dataTask(with: url! as URL, completionHandler:{ (data, response, error) in
//if download error
if error != nil{
print(error!)
return
}
guard let imageData = UIImage(data: data!) else { return }
DispatchQueue.main.async{
self.imgPortrait.image = imageData
ImagePortrait().saveImageDocumentDirectory(image: imageData)
}
데이터는 완전히 잘 imgPortrait
에 표시됩니다. 다음은 나머지 기능입니다. /\(userUID)/\(CharacterSelection.sharedInstance.getActiveCharacterName())
은 선택 사항입니다. 그것이 이미지를 검색하기 위해 갈 때 그리고 그것을 저장할 때 나는 경로가 정확히 동일하다는 것을 확인할 수 있습니다. 나는 그것이 이미지를 createFile
와 함께 저장하고있는 것처럼 느껴진다. 그러나 나는 확신 할 수 없다.
func saveImageDocumentDirectory(image: UIImage){
if let userUID = Auth.auth().currentUser?.uid{
let fileManager = FileManager.default
let paths = (getDirectoryPath() as NSString).appendingPathComponent("/\(userUID)/\(CharacterSelection.sharedInstance.getActiveCharacterName())/characterPortrait.png")
createDirectory(name: (getDirectoryPath() as NSString) as String)
let imageData = UIImagePNGRepresentation(image)
fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
}
}
func getDirectoryPath() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let documentsDirectory = paths[0]
return documentsDirectory
}
func getImage() -> String{
if let userUID = Auth.auth().currentUser?.uid{
let fileManager = FileManager.default
let imagePath = (self.getDirectoryPath() as NSString).appendingPathComponent("/\(userUID)/\(CharacterSelection.sharedInstance.getActiveCharacterName())/characterPortrait.png")
if fileManager.fileExists(atPath: imagePath){
return imagePath
}else{
print("No Image")
return ""
}
}
else{
return ""
}
}
func createDirectory(name: String){
let fileManager = FileManager.default
let paths = (getDirectoryPath() as NSString).appendingPathComponent(name)
if !fileManager.fileExists(atPath: paths){
try! fileManager.createDirectory(atPath: paths, withIntermediateDirectories: true, attributes: nil)
}else{
print("Directory is already created.")
}
}
미리 감사드립니다.