Skip to content

Instantly share code, notes, and snippets.

@marchyuu
Created June 19, 2021 10:08
Show Gist options
  • Save marchyuu/a0b49ecb02a5f33417571814be53af82 to your computer and use it in GitHub Desktop.
Save marchyuu/a0b49ecb02a5f33417571814be53af82 to your computer and use it in GitHub Desktop.
//
// ProductForm.swift
// Glame
//
// Created by Jenifer Yolanda on 07/04/21.
//
import UIKit
import CloudKit
class ProductForm: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate,UIPickerViewDelegate, UIPickerViewDataSource{
var fetchedFrameType: String?
var fetchedBrandName: String?
var fetchedBrandType: String?
var fetchedDesc: String?
var fetchedPrice: Int?
var fetchedStoreURL: String?
var fetchedProductImage: String?
@IBOutlet weak var frameType: UITextField!
@IBOutlet weak var brandName: UITextField!
@IBOutlet weak var brandType: UITextField!
@IBOutlet weak var Desc: UITextField!
@IBOutlet weak var price: UITextField!
@IBOutlet weak var storeURL: UITextField!
@IBOutlet weak var productImage: UIImageView!
@IBOutlet weak var saveBtn: UIButton!
var imagePicker = UIImagePickerController()
var picker = UIPickerView()
let privateDatabase = CKContainer(identifier: "iCloud.com.example.Glame").privateCloudDatabase
let pickerData = ["Cat Eye", "D-Frame", "Oversized", "Round", "Rimless"]
override func viewDidLoad() {
super.viewDidLoad()
self.picker.delegate = self
self.picker.dataSource = self
frameType.inputView = picker
frameType.textAlignment = .center
//klo dikirim dari edit btn show ini :
// frameType.text = fetchedFrameType
// brandName.text = fetchedBrandName
// brandType.text = fetchedBrandType
// Desc.text = fetchedDesc
// storeURL.text = fetchedStoreURL
// productImage.image = UIImage(named: fetchedProductImage!)
//
// let formatter = NumberFormatter()
// formatter.locale = Locale(identifier: "id_ID")
// formatter.numberStyle = .currency
// if let priceDec = formatter.string(from: fetchedPrice! as NSNumber) {
//
// price.text = "\(priceDec)"
//
// }
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
frameType.text = pickerData[row]
frameType.resignFirstResponder()
}
@IBAction func buttonClicked(_ sender: Any) {
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
print("Album opened")
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = false
present(imagePicker, animated: true, completion: nil)
}
}
// func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
// self.dismiss(animated: true, completion: { () -> Void in
//
// })
// //print(image)
// productImage.image = image
// }
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
self.dismiss(animated: true, completion: nil)
guard let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage else {
return
}
productImage.image = image
}
@IBAction func SaveClicked(_ sender: Any) {
saveBtn.isHidden = true
let categoryId = frameType.text!
let brandName = brandName.text!
let brandType = brandType.text!
let dec = Desc.text!
let price = Int64(price.text!)
let storeURL = storeURL.text!
let productImage = productImage.image!
let data = productImage.pngData(); // UIImage -> NSData, see also UIImageJPEGRepresentation
let url = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(NSUUID().uuidString+".dat")
do {
//try data!.writeToURL(url, options: [])
try data?.write(to: url!, options: [])
} catch let e as NSError {
print("Error! \(e)");
return
}
let record = CKRecord(recordType: "Product")
record.setValue(categoryId, forKey: "categoryId")
record.setValue(brandName, forKey: "productBrand")
record.setValue(brandType, forKey: "productName")
record.setValue(dec, forKey: "productDescription")
record.setValue(price, forKey: "productPrice")
record.setValue(storeURL, forKey: "productLink")
record.setValue(CKAsset(fileURL: url!), forKey: "productImage")
privateDatabase.save(record) { (savedRecord, error) in
if error == nil {
print("Record Saved")
} else {
print("Record Not Saved")
}
print(error)
print(savedRecord)
}
}
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment