1
我有一個使用CoreData和NSFetchedResultsController的數據填充的表。它使用一個具有布爾值的屬性填充兩個部分。但我想將每個部分的數據分成兩個數組進行進一步處理。來自NSFetchedResultsController的兩個數組swift
有沒有辦法將Fetched Results Controller生成的兩個部分的數據保存到不同的數組中。
我試圖創建使用用於創建使用的代碼的部分中的屬性值的兩個謂詞:
var context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!
var frc: NSFetchedResultsController = NSFetchedResultsController()
func getFetchedResultsController() -> NSFetchedResultsController {
frc = NSFetchedResultsController(
fetchRequest: fetchRequest(),
managedObjectContext: context,
sectionNameKeyPath: "frequent",
cacheName: nil)
return frc
}
//Fetch request of done Items to populate the two sections (Frequent and nonFrequent)
func fetchRequest() -> NSFetchRequest {
let fetchRequest = NSFetchRequest(entityName: "Item")
let frequentSortDescriptor = NSSortDescriptor(key: "frequent", ascending: false)
let nameSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
let predicate = NSPredicate(format: "done == %@", true)
fetchRequest.predicate = predicate
fetchRequest.sortDescriptors = [frequentSortDescriptor, nameSortDescriptor]
return fetchRequest
}
override func viewDidLoad() {
super.viewDidLoad()
frc = getFetchedResultsController()
frc.delegate = self
frc.performFetch(nil)
frc.fetchRequest.predicate = NSPredicate(format: "frequent == %@", true)
if let freqResults = frc.fetchedObjects as? [Item] {
freq = freqResults
}
frc.fetchRequest.predicate = NSPredicate(format: "frequent == %@", false)
if let nonFreqResults = frc.fetchedObjects as? [Item] {
nonFreq = nonFreqResults
}
println("\(freq.count) Fav and \(nonFreq.count) Non Fav")
}
但「println()一樣」末打印兩個陣列具有各自10個計數。但實際上,'freq.count'應該有7個,'nonFreq.count'應該有3個項目,這兩個部分總共有10個項目。
這些部分顯示正確的項目。我只是不能將這些項目保存到數組中。
是否有可能因爲第一個'fetchRequst()'已經有了一個謂詞,我試圖在它上面應用第二個謂詞?如果是這樣的話,我該如何解決它?