Comment puis-je enregistrer et afficher une Image avec la base de données de swift 3
Je fais un projet en Swift 3
- xcode 8
, et je suis en train d'utiliser de base de données pour enregistrer et afficher des images dans une base de données de la table "utilisateurs".
Cette image est la photo de l'utilisateur dans son profil.
Maintenant, j'ai réussi à enregistrer des chaînes et de leur montrer à partir de base de données, mais je vais avoir des problèmes dans le travail avec les images.
C'est ce que j'ai à ce jour:
L'ajout d'UTILISATEURS dans la base de données
func addUser() {
let app = UIApplication.shared.delegate as! AppDelegate
let context = app.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
request.returnsObjectsAsFaults = false
let newUser = NSEntityDescription.insertNewObject(forEntityName: "Users", into: context)
if (firstName.text == "" && lastName.text == "" && contact.text == "" && email.text == "") { //if we have a user profile delete it
deleteUser()
} else { //add a new user profile
newUser.setValue(firstName.text, forKey: "firstName")
newUser.setValue(lastName.text, forKey: "lastName")
newUser.setValue(contact.text, forKey: "contact")
newUser.setValue(email.text, forKey: "email")
//newUser.setValue(imageView.image, forKey: "photo")
//let imgUrl = UIImagePickerControllerReferenceURL as! NSURL
let img = UIImage(named: "f.png")
let imgData = UIImageJPEGRepresentation(img!, 1)
newUser.setValue(imgData, forKey: "photo")
print ("Data added in Users")
}
do {
try context.save()
//print("saved!!!")
Alert.show(title: "Success", message: "Profile Saved", vc: self)
} catch {
//print ("Error")
Alert.show(title: "Error", message: "Profile not Saved", vc: self)
}
}
Montrer aux Utilisateurs de core data
func showUser() {
let app = UIApplication.shared.delegate as! AppDelegate
let context = app.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
request.returnsObjectsAsFaults = false
do {
let results = try context.fetch(request)
if results.count > 0 {
print("Profile: Data Found:")
for result in results as! [NSManagedObject] {
if let firstNameinData = result.value(forKey: "firstName") as? String{
firstName.text = firstNameinData
print(firstNameinData)
}
if let lastNameinData = result.value(forKey: "lastName") as? String{
lastName.text = lastNameinData
print(lastNameinData)
}
if let contactinData = result.value(forKey: "contact") as? String{
contact.text = contactinData
print(contactinData)
}
if let emailinData = result.value(forKey: "email") as? String{
email.text = emailinData
print(emailinData)
}
if let photoinData = result.value(forKey: "photo") as? UIImage{
imageView.image = photoinData
}
}
} else { //if there is not a user profile
firstName.text = ""
lastName.text = ""
contact.text = ""
email.text = ""
print("Profile : No data found")
}
//print("Loaded!!!")
} catch {
print ("Error Loading")
}
}
Je ne peux pas montrer l'image que j'ai enregistré.
Avez-vous des conseils?
EDIT: Xcode me donne ce message "Connexion à assetsd a été interrompu ou assetsd mort"
(NS)Data
objet de la propriété photo
, pas un UIImage
. Je pense que: if let photoinData = result.value(forKey: "photo") as? NSData{imageView.image = UIImage(data: photoinData);}
, ou quelque chose de similaire devrait fonctionner.Je n'ai que ça a fonctionné. merci de nice 🙂
si laisser photoinData = résultat.valeur(forKey: "photo")? NSData{ ImageView.image = UIImage(données: photoinData que Data) }
Juste une autre question: je suis l'insertion d'une image que l'utilisateur choisit son téléphone avec un imagePickerController. Comment puis-je ajouter que l'image? (Au lieu de f.png).
stackoverflow.com/questions/38291997/... ? Approche similaire?
OriginalL'auteur H.N. | 2016-10-31
Vous devez vous connecter pour publier un commentaire.
La propriété
photo
deUsers
est(NS)Data
, comme vous le faites là, la conversion de laUIImage
enNSData
.Alors que lors de l'extraction de l'info, vous faites comme
photo
était unUIImage
objet:Ce n'est pas logique selon les lignes précédentes. Il devrait être quelque chose comme ça:
Note: je ne parle pas de Swift, de sorte que le projet de code ne se compile pas, mais vous devriez avoir une idée de ce qui est mal et ce qui est le besoin d'être fait.
OriginalL'auteur Larme
Larme a presque parfait, mais au lieu de cela:
ce faire:
OriginalL'auteur Rolf Cosmo Anthony
Espère que je vous aide. beau travail pour moi
OriginalL'auteur Manvir Singh
Espère que cela va vous aider. D'abord j'ai aussi eu une grande confusion de stockage de l'image dans la base de Données.
Ce est utilisé pour enregistrer l'image dans coreData
D'abord créer Nsmanaged Classe d'Objet
Maintenant aller à la Vue du Contrôleur que vous souhaitez enregistrer l'image .
Ce contrôleur est utilisé pour extraire tout
OriginalL'auteur Bhuvaneswari Lakshminarayanan