J'ai une application qui stocke certaines informations dans coredata
et les lit. J'écris une extension de message de cette application et je voudrais avoir cette extension lisant les mêmes données mais j'ai toujours la réponse vide.Impossible de lire les coredata de l'extension
Voici le code que je utilise dans l'application principale:
context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
fetchImages(Date()){ (array, arrayData) in
for image in array{
imagesArray.insert(image, at:0)
}
}
J'utilise exactement le même code dans l'extension, mais il ne lit pas les données. Ce que je me demande, c'est que je n'utilise pas le appGroupIdentifier
n'importe où dans le code.
Comment puis-je faire pour y parvenir?
Merci.
Voici le code de fetchImages
fonction:
func fetchImages(_ predicate:Date, completion:(_ array:[Image], _ arrayData:NSArray)->()){
var arrData = [NSManagedObject]()
var existingImages = [Image]()
let request :NSFetchrequest<NSFetchrequestResult> = NSFetchrequest(entityName: "Photo")
do {
let results = try context?.fetch(request)
var myImage = Image()
if ((results?.count) != nil) {
for result in results! {
myImage.imageUrl = (resultat as! NSManagedObject).value(forKey:"url") as! String
myImage.imageFileName = (resultat as! NSManagedObject).value(forKey:"imageFileName") as! String
existingImages.append(myImage)
arrData.append(result as! NSManagedObject)
}
} else{
print ("No photo.")
}
completion(existingImages, arrData as NSArray)
} catch{
print ("Error during CoreData request")
}
}
Vous n'êtes pas appeler le gestionnaire d'achèvement du tout. En passant, les étiquettes de paramètres dans la fermeture d'achèvement sont sans signification dans Swift 3+ – vadian
J'ai enlevé le gestionnaire 'achèvement 'lors du nettoyage de la fonction. Je modifie la question pour le remettre. – radar
Le contexte est-il «nul»? D'ailleurs, le contexte est censé être non-optionnel. Et pourquoi, pour l'amour du ciel, lancez-vous spécifiquement '[NSManagedObject]' à NSArray' non spécifique. Ne fais pas ça. Utilisez uniquement les types de collection natifs Swift. – vadian