내 이미지보기에 자리 표시 자 이미지를 설정했습니다. 사용자는 사진을 라이브러리에서 변경할 수 있습니다. 일단이 작업을 완료하면이 이미지를 데이터베이스에 업로드 할 수 있습니다. 사용자는 하나의 이미지 또는 여러 이미지를 업로드 할 수 있으며 [UIImage] 형식으로 업로드됩니다. 그러나, 나는 자리 표시 자 이미지를 업로드하고 싶지 않습니다.UIImageView의 이미지가 자리 표시 자 이미지가 아니며 UIImage 배열에 추가됩니다.
나는 이것을 달성하기 위해 관리했지만 매우 비관적입니다. 이미지가 사용자 후 설정 한 때를 선택한
class ItemImageViewClass: UIImageView {
//keeps track of whether the image has changed from the placeholder image.
var isSet = Bool()
} 다음
과 : 저는는 isset라는 속성을 추가하고이 클래스에 내 모든 이미지보기를 설정, 첫째로있는 UIImageView의 서브 클래스로 이런 짓을했는지 이미지의 경우 isSet 속성이 true로 설정됩니다.
var imageArray: [UIImage]? = nil
if imageViewOne.isSet {
guard let mainImage = imageViewOne.image else {return}
if (imageArray?.append(mainImage)) == nil {
imageArray = [mainImage]
}
}
if imageViewTwo.isSet {
guard let imageTwo = imageViewTwo.image else {return}
if (imageArray?.append(imageTwo)) == nil {
imageArray = [imageTwo]
}
}
guard imageArray != nil else {
print("imageArray is nil")
alertMessage("Hey!", message: "Please add some images!")
return
}
적어도 하나 개의 이미지가 선택
배열 될 것이다 : 이미지보기 이미지 지정자 화상으로부터 변경된 경우
확인할 (즉isSet == true
) I는 다음과 같은 코드를 사용 데이터베이스에 저장됩니다.
이것은 매우 지저분한 방법처럼 보입니다. UIImageView를 서브 클래스 화하고 일련의 if
문을 사용하여 각 이미지가 변경되었는지 확인해야합니다. 이것을 달성하기위한보다 우아한 방법이 있습니까? 감사합니다
답장을 보내 주셔서 감사합니다. 제 접근 방식보다 낫습니다. 나는 코드의 마지막 부분에서 머리를 감싸기 위해 고심하고있다. 나는이 사용 예제에서'.filter'가'.isPlaceholderImage'에 대한 반환 값이 false 인 이미지 뷰를 제거 할 것이라는 것을 이해 합니다만,'.flatMap {$ 0.image}'do 여기서? 내가 요소의 이미지에 액세스하고 그것을 imageArray에 추가한다고 생각하는 것이 맞습니까? 나는'.map'이 그것에 사용될 것이라고 생각 했을까? –
flatMap은 배열에서 모든 선택 사항을 제거합니다. –