将从 managedObjectContext 过滤的对象转换为 NSArray
Turning objects filtered from managedObjectContext into an NSArray
我是 iOS 的新手,我发现自己 "thrown to the wolves" 正在接受核心数据作业。我正在尝试使用 NSPredicate
创建一个 Note
对象数组来搜索 managedObjectContext
。它不起作用,但我认为我接近 "finish line"。这是我得到的:
我实例化了一个 managedObjectContext
,里面有 Note
个对象。
我在实例化为空的 class 顶部创建了一个名为 filteredNotes
的变量(至少我是这么认为的)。
var filteredNotes: [Note] = []
再往下,我有一个函数,我想 "fill up" filteredNote 数组,其中包含与谓词匹配的注释对象。这是我正在尝试的方法:
let resultPredicate = NSPredicate(format: "noteTitle contains[c] %@", searchBar.text)
filteredNotes = (managedObjectContext as! NSArray).filteredArrayUsingPredicate(resultPredicate)
编译器对此有如下说法:
Cast from 'NSManagedObjectContext?' to unrelated type 'NSArray' always fails
Cannot assign a value of type '[AnyObject]' to a value of type '[Note]'
我看到很多香草 NSArrays
(不是 managedObjectContexts
)这样做的例子,我很困惑为什么我不能用 managedObjectContext
来做这件事有 Note
个对象。
这是我的注释:NSManagedObject 的样子:
import Foundation
import CoreData
class Note: NSManagedObject {
@NSManaged var dateCreated: NSDate
@NSManaged var dateEdited: NSDate
@NSManaged var noteTitle: String
@NSManaged var noteBody: String
}
关于如何创建 filteredNote
数组有什么建议吗?
托管对象上下文与数组无关。它不能 "filled" 与对象。它只是一个抽象 class,让您可以访问您的数据。
从 Core Data 存储中获取对象的方式如下:发出获取请求,可选地向请求添加过滤器 and/or 排序,获取对象。
let request = NSFetchRequest(entityName:"Note")
let result = managedObjectContext.executeFetchRequest(request error:nil) as [Note]
您现在可以过滤此数组(在转换为 NSArray 后使用 filteredArrayUsingPredicate
),或者您可以将谓词添加到原始获取请求(这应该更有效)。
我是 iOS 的新手,我发现自己 "thrown to the wolves" 正在接受核心数据作业。我正在尝试使用 NSPredicate
创建一个 Note
对象数组来搜索 managedObjectContext
。它不起作用,但我认为我接近 "finish line"。这是我得到的:
我实例化了一个 managedObjectContext
,里面有 Note
个对象。
我在实例化为空的 class 顶部创建了一个名为 filteredNotes
的变量(至少我是这么认为的)。
var filteredNotes: [Note] = []
再往下,我有一个函数,我想 "fill up" filteredNote 数组,其中包含与谓词匹配的注释对象。这是我正在尝试的方法:
let resultPredicate = NSPredicate(format: "noteTitle contains[c] %@", searchBar.text)
filteredNotes = (managedObjectContext as! NSArray).filteredArrayUsingPredicate(resultPredicate)
编译器对此有如下说法:
Cast from 'NSManagedObjectContext?' to unrelated type 'NSArray' always fails
Cannot assign a value of type '[AnyObject]' to a value of type '[Note]'
我看到很多香草 NSArrays
(不是 managedObjectContexts
)这样做的例子,我很困惑为什么我不能用 managedObjectContext
来做这件事有 Note
个对象。
这是我的注释:NSManagedObject 的样子:
import Foundation
import CoreData
class Note: NSManagedObject {
@NSManaged var dateCreated: NSDate
@NSManaged var dateEdited: NSDate
@NSManaged var noteTitle: String
@NSManaged var noteBody: String
}
关于如何创建 filteredNote
数组有什么建议吗?
托管对象上下文与数组无关。它不能 "filled" 与对象。它只是一个抽象 class,让您可以访问您的数据。
从 Core Data 存储中获取对象的方式如下:发出获取请求,可选地向请求添加过滤器 and/or 排序,获取对象。
let request = NSFetchRequest(entityName:"Note")
let result = managedObjectContext.executeFetchRequest(request error:nil) as [Note]
您现在可以过滤此数组(在转换为 NSArray 后使用 filteredArrayUsingPredicate
),或者您可以将谓词添加到原始获取请求(这应该更有效)。