私はcoredata
にいくつかの情報を格納しているアプリを持っています。 このアプリケーションのメッセージ拡張機能を書いていますが、この拡張機能に同じデータを読み込ませたいのですが、私はいつも空の応答があります。ここでエクステンションからコアデータを読み取ることができません
は、私がメインのアプリで使用しているコードです:
context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
fetchImages(Date()){ (array, arrayData) in
for image in array{
imagesArray.insert(image, at:0)
}
}
私は拡張子でまったく同じコードを使用していますが、それは、データを読み取ることはありません。 私が不思議に思うことは、コードのどこにでもappGroupIdentifier
を使用していないということです。
これを行うにはどうすればよいですか?
ありがとうございました。ここで
はfetchImages
関数のコードです:アプリ・グループをオンに
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")
}
}
あなたはすべてで完了ハンドラを呼び出すされていません。
あなたのコードは、これを近似するものになります。ところで、完了クロージャのパラメータラベルはSwift 3 + – vadian
では無意味です。関数をクリーニングするときに 'completion'ハンドラを削除しました。私はそれを元に戻すために質問を編集する。 – radar
コンテキスト 'nil'はありますか?ところで、コンテキストは非オプションであるはずです。そしてなぜ天国のために特定の 'NSManagedObject 'を非特異的なNSArrayにキャストしますか?それをしないでください。 Swiftネイティブコレクションタイプのみを使用します。 – vadian