我有一个应用程序,它将一些信息存储在coredata
中并读取它们。 我正在写这个应用程序的消息扩展,我希望这个扩展读取相同的数据,但我总是有空的响应。无法从分机读取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