[英]fetch data from CoreData module
我正在Swift 3.0中的一個項目上工作,我有一個CoreData
模塊,該模塊具有五個屬性,類型為String,名稱為NSManageObject
名稱為MP3Details
。 它們分別是duration, trackID
, trackName
, trackURL
。
要求是,一旦我通過trackID
,就需要檢索與該ID相關的元素。 例如,一旦我通過trackID
我就應該獲得屬於該軌道ID的軌道持續時間, trackName
等。
到目前為止,我得到的是一個空數組。 我傳遞trackID
並獲取的信息的部分完成的代碼屬於該ID,如下所示。 我在這里想念什么?
我傳遞trackID
if let arr = StorageManager.getTrackId(playlistName: playlistName) {
for object in arr {
let trackId = object.trackID
print(trackId ?? "ID")
if let detailsArr = StorageManager.getTrackDetails(trackId: trackId) {
print("CoreDataItemArray :", detailsArr)
}
}
是否從CoreData請求詳細信息的方法
public static func getTrackDetails(trackId:String?) -> [MP3Details]?{
let appDelegate = UIApplication.shared.delegate as! AppDelegate;
let context = appDelegate.persistentContainer.viewContext;
let request = NSFetchRequest<NSFetchRequestResult>(entityName: MP3_DETAILS_ENTITY)
if(trackId != nil){
request.predicate = NSPredicate(format:"trackID = %@", trackId!)
}
request.returnsObjectsAsFaults = false
do{
let results = try context.fetch(request)
print("Result : ",results)
if(results.count > 0 ){
return results as? [MP3Details]
}else{
print("No Mp3 results for the track ID")
}
}catch{
print("Error in fetching items")
}
return nil;
}
func loadData()->無效{
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedObjContext = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Person")
do {
names = try managedObjContext.fetch(fetchRequest)
} catch let error as NSError {
print("Error while fetching the data:: ",error.description)
}
}
@IBAction func addNewName(_ sender: Any) {
let alert = UIAlertController(title: "Add Name", message: "Add new name:", preferredStyle: UIAlertControllerStyle.alert)
let alertAction = UIAlertAction(title: "Add", style: UIAlertActionStyle.default) { action in
guard let textField = alert.textFields?.first ,
let nameToSave = textField.text else{
return
}
print("nameToSave::: ",nameToSave)
self.save(name:nameToSave)
self.hitListTableView.reloadData()
}
alert.addTextField()
let alertCancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel, handler: nil)
alert.addAction(alertAction)
alert.addAction(alertCancelAction)
self.present(alert, animated: true, completion: nil)
}
func save(name:String) -> Void {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Person", in: managedContext)
let person = NSManagedObject(entity: entity!, insertInto: managedContext)
person.setValue(name, forKey: "name")
do {
try managedContext.save()
names.append(person)
} catch let error as NSError {
print("Error while saving the data: ",error.localizedDescription)
}
}
嘗試將謂詞行替換為:
request.predicate = NSPredicate(format:"%K == %@", "trackID", trackId!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.