Saya mencoba melakukan perbandingan string sebelum menyimpan ke Data Inti.
String yang disimpan ke Data Inti akan berisi daftar latihan fisik. Rangkaian latihan hanya boleh disimpan satu kali apa pun urutannya.
Contoh:
let str1 = "Burpees Rowing Running"
// This is in Core Data
let str2 = "Running Rowing Burpees"
// This is an attempt to save to Core Data. It should *fail* because there is already an exercise set with these exercises - just not in the same order.
Kemajuan saya:
func checkEntityThenSave(exerciseGroup:String){
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "SavedExerciseSets")
let predicate = NSPredicate(format: "upperBody.sortedComponents == %@", exerciseGroup.components(separatedBy: " ").sorted())
request.predicate = predicate
request.fetchLimit = 1
do{
let count = try context.count(for: request)
print("Count - \(count)") // Always evaluates to 0
if(count > 0){
// Save to Core Data
}
else{
// Show Alert
}
}
catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
Dalam kode saya, saya mencoba membandingkan hasil yang diambil (string) di Data Inti, dengan string baru yang saya coba simpan.
Masalah saya adalah saya terus mendapatkan 0 - yang menyebabkan upaya penyimpanan gagal setiap saat.
Bagaimana cara membandingkan string yang saya coba simpan, dengan string yang muncul di Data Inti?
upperBody
atribut ke dalam array Set dan kemudian periksa apakah set pertama ada dalam array itu - person Joakim Danielson   schedule 01.04.2021SavedExerciseSets
yang ada di CoreData Anda benar-benar"Running Rowing Burpees"
? Maksud saya dengan huruf besar semua di awal setiap kata? - person Larme   schedule 04.04.2021upperBody
memiliki atributsortedComponents
, yaitu larik string yang diurutkan? Jika demikian, kode Anda akan berfungsi, jika tidak, karena SQL tidak dapat menguraikan dan mengurutkan atribut string sebelum diambil. - person Reinhard Männer   schedule 04.04.2021