Ich arbeite an einem Projekt in Swift 3.0, wo ich eine UITableView mit mehreren Auswahloption (jede Zeile hat eine URL). Daher kann die TableView-Anwendung oben in einem Textfeld einen Namen eingeben. Meine Anforderung ist, sobald diese Zeilen ausgewählt wurden, sollten die Daten in Kerndaten unter dem eingegebenen Namen gespeichert werden. Ab sofort werden die Daten als einzelne Elemente gespeichert, daher habe ich Probleme mit dem Clustering von Daten unter ihrem Namen. Wie könnte ich das erreichen? Die Methode, die ich speichern und extrahieren Daten wie folgt.So speichern Sie mehrere Objekte in CoreData unter einem einzigen Namen
speichern
public static func savePlaylistDetails(audio:AudioDetails, playListName: String) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let newPlaylist = NSEntityDescription.insertNewObject(forEntityName: PlayList_DETAILS_ENTITY, into: context)
newPlaylist.setValue(playListName, forKey:"playlistName");
newPlaylist.setValue(audio.mediaId, forKey:"trackID");
do{
try context.save();
print("Saved.....")
}
catch{
print("There was an error")
}
}
extrahieren Sie die gespeicherten Daten
public static func getPlayList() -> [PlayListDetails]?{
let appDelegate = UIApplication.shared.delegate as! AppDelegate;
let context = appDelegate.persistentContainer.viewContext;
let request = NSFetchRequest<NSFetchRequestResult>(entityName: PlayList_DETAILS_ENTITY)
request.returnsObjectsAsFaults = false
do{
let results = try context.fetch(request)
if(results.count > 0){
for result in results as! [NSManagedObject]{
let playListDetails:PlayListDetails? = result as? PlayListDetails
print("Title: \(playListDetails?.playlistName)")
}
return results as? [PlayListDetails]
}else{
print("No results")
}
}catch{
print("Error in fetching items")
}
return nil;
}