私の現在のプロジェクトでは、(イメージ属性)のようなデータをcoredataに保存していますが、即座にフェッチしている間は、データの正確な数がわかりません。私が保存したものよりもデータの数が多いです。しかし、ログにはすべてのデータが正常に保存されていることが示されています。私の探求はフェッチ前です。ログが表示されるので、データが正しく保存されていないという疑問はありません。この問題のcoredataで同時に保存してフェッチする方法swift3
FUNC saveImageDetails(aImage:UIImage ?, IMAGEURL:文字列!, phAsset:PHAsset !,のobjectType:文字列、OBJECTID:文字列、objectNameの:文字列、ロケーション:String)を{
if let newImage = aImage {
let date = HelpherMethod.sharedInstance().toLocalTime(Date())
let resource = PHAssetResource.assetResources(for: phAsset!).first
let fileName = resource?.originalFilename
var imageName : String?
let timestamp = date?.timeIntervalSince1970
print(String(format:"%.0f",timestamp!))
let currentTimeStamp = String(format:"%.0f",timestamp!)
imageName = String(format:"%@_%@",AuthService.instance.userName,currentTimeStamp)
let mImage = self.objectWithTypePredicate(aType: "Image", predicate: NSPredicate(format:"(imageName == %@)",imageName!), canCreate: true)
mImage?.setValue(fileName, forKey: "fileName")
mImage?.setValue(date, forKey: "dateTime")
mImage?.setValue(objectId, forKey: "objectId")
mImage?.setValue(objectType, forKey: "objectType")
mImage?.setValue(objectName, forKey: "objectName")
mImage?.setValue(newImage, forKey: "image")
mImage?.setValue(imageName, forKey: "imageName")
mImage?.setValue(imageUrl, forKey: "imageUrl")
if let loc = location {
mImage?.setValue(loc, forKey: "location")
}
mImage?.setValue("progress", forKey: "status") //Status failed for not uploaded // progress for processing// success for sync// at the initial level all status are set to progress
do {
try mImage?.managedObjectContext?.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
}
(?:文字列、sortingKey:文字列、isAscending:ブール、述語:NSPredicate、isAllrecord:エンティティネームブール値)coredataからFUNCのfetchRecordsWithClassNameをfethcing
// - >配列{
let managedContext = PLMCoreDataInstance.managedObjectContext
// Initialize Fetch Request
let fetchRequest = NSFetchRequest<NSFetchRequestResult>() as NSFetchRequest
//create entity description
let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: managedContext!)
let sortDescriptor = NSSortDescriptor(key: sortingKey, ascending: isAscending)
fetchRequest.sortDescriptors = [sortDescriptor]
// optional chaining
if let newPredicate = predicate {
fetchRequest.predicate = newPredicate
}
//Configure fetch Request
fetchRequest.entity = entityDescription
do {
if let results = try? managedContext?.fetch(fetchRequest) {
return results!
}
}
return []
}
フェッチする前に保存してください。あなたは書いた後にコードでそれをやっていますか? – ahmed
コアレターに書き込んだ後、私はちょうどフェッチしています –
書くことによって私はあなたのコンテキストを保存するのですか? – ahmed