问题
In Swift 3 when we use NSFetchRequest
, we have to specify NSFetchRequestResult
. But how to get an array of properties values? If I use something like this
let fetchRequest = NSFetchRequest<MyClass>(entityName: "MyClass")
fetchRequest.propertiesToFetch = ["myAttributeName"]
an exception fires when I try to execute fetch request.
error: -executeRequest: encountered exception = The database appears corrupt.
If I remove a line with propertiesToFetch
I don't get any errors, but I get an array of objects, not properties.
回答1:
I forgot to set resultType
for NSFetchRequest.
let fetchRequest = NSFetchRequest<MyClass>(entityName: "MyClass")
fetchRequest.propertiesToFetch = ["myAttributeName"]
fetchRequest.resultType = .dictionaryResultType
回答2:
Actually, you are better off in most cases using the array of objects rather than properties. Core Data will manage the optimal load balancing for round trips to the store for you. What you presumably worry about most (memory, performance, data access times) is really not warranted.
Also, this should result in cleaner, safer and more concise code.
来源:https://stackoverflow.com/questions/39588311/swift-3-nsfetchrequest-propertiestofetch