2
私は複数選択オプション(各行にURLがある)を持つUITableView
を持っているswift 3.0でプロジェクトを進めています。従って、UITableView
の上には、UITextfieldに名前を入力することができます。これらの行が選択されると、データは入力済みの名前でCoredata
に保存されます。今のところ、データは個々の要素として保存されるため、名前の下にデータをクラスタリングすることには問題があります。どうすればこれを達成することができますか?私は以下のようにデータを保存し抽出する方法です。複数のオブジェクトを単一の名前でコアデータに保存する
保存
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")
}
}
辞書を作成し、適切なキーを持つ辞書内のすべてのフィールドを保存し、保存されたデータに
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;
}
フィールドのデータ型を変更できますか?はいの場合、データ型をNSDataに変更して、1つのフィールドに文字列の配列を保存することができます。 – GeneCode
と同じように、迅速なステップとコードスニペットには大いに感謝しますか? – danu