从提取请求中检索对象 Swift
Retrieve object from fetch request Swift
我有一个名为 "Device" 的核心数据实体,具有一个名为 "asset_tag" 的属性以及以下代码:
var endArray: [Device] = []
var request = NSFetchRequest<NSFetchRequestResult>()
request = Device.fetchRequest()
request.returnsObjectsAsFaults = false
endArray = try context.fetch(request) as! [Device]
print (endArray)
这将打印出以下内容:
[<Device: 0x608000092c00> (entity: Device; id: 0xd000000000140000 <x-coredata://22AC91EB-92B1-4E5B-A5A9-A5924E0ADD3E/Device/p5> ; data: {
"asset_tag" = 26;
})]
我只想打印出来 ['26']
这样试试-:
func loadData(){
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do{
endArray = try context.fetch(request) as! [Device]
for data in 0..< endArray!.count{
if let value = endArray?[data].value(forKey: "Your Key") {
print(value)
}
}
}catch{
}
}
你明白了,因为 endArray
是一个 [Device]
,这意味着其中的每个条目都是一个 Device
。当您打印数组时,您得到的是对数组中的每个条目调用 debugDescription
的结果。
如果您只想要数组中 asset_tag
属性 的整数值,您可以使用 map
:
获取该数组
let tagValues : [Int] = endArray.map { Int([=10=].asset_tag) }
这表示 tagValues
具有类型 [Int]
,并且您正在使用 map
分配一个值,以便为 endArray
中的每个条目获取一个值。该值是通过在每个条目上查找 asset_tag
的值找到的。结果是对应于 asset_tag
个值的 Int
数组。
首先,如果您使用的是 NSManagedObject
子类,请使用特定的获取请求来避免类型转换。 NSFetchRequest
是引用类型。将请求声明为常量 (let
)。
提取请求returns 始终是实体[NSManagedObject]
的数组。 垃圾很重要。该对象可以包含许多属性和关系。
要获取特定属性的数组,请使用 map
函数
var endArray = [Device]()
let request : NSFetchRequest<Device> = Device.fetchRequest()
request.returnsObjectsAsFaults = false
do {
endArray = try context.fetch(request)
let tagArray = endArray.map { [=10=].asset_tag }
print(tagArray)
} catch { print(error) }
我有一个名为 "Device" 的核心数据实体,具有一个名为 "asset_tag" 的属性以及以下代码:
var endArray: [Device] = []
var request = NSFetchRequest<NSFetchRequestResult>()
request = Device.fetchRequest()
request.returnsObjectsAsFaults = false
endArray = try context.fetch(request) as! [Device]
print (endArray)
这将打印出以下内容:
[<Device: 0x608000092c00> (entity: Device; id: 0xd000000000140000 <x-coredata://22AC91EB-92B1-4E5B-A5A9-A5924E0ADD3E/Device/p5> ; data: {
"asset_tag" = 26;
})]
我只想打印出来 ['26']
这样试试-:
func loadData(){
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do{
endArray = try context.fetch(request) as! [Device]
for data in 0..< endArray!.count{
if let value = endArray?[data].value(forKey: "Your Key") {
print(value)
}
}
}catch{
}
}
你明白了,因为 endArray
是一个 [Device]
,这意味着其中的每个条目都是一个 Device
。当您打印数组时,您得到的是对数组中的每个条目调用 debugDescription
的结果。
如果您只想要数组中 asset_tag
属性 的整数值,您可以使用 map
:
let tagValues : [Int] = endArray.map { Int([=10=].asset_tag) }
这表示 tagValues
具有类型 [Int]
,并且您正在使用 map
分配一个值,以便为 endArray
中的每个条目获取一个值。该值是通过在每个条目上查找 asset_tag
的值找到的。结果是对应于 asset_tag
个值的 Int
数组。
首先,如果您使用的是 NSManagedObject
子类,请使用特定的获取请求来避免类型转换。 NSFetchRequest
是引用类型。将请求声明为常量 (let
)。
提取请求returns 始终是实体[NSManagedObject]
的数组。 垃圾很重要。该对象可以包含许多属性和关系。
要获取特定属性的数组,请使用 map
函数
var endArray = [Device]()
let request : NSFetchRequest<Device> = Device.fetchRequest()
request.returnsObjectsAsFaults = false
do {
endArray = try context.fetch(request)
let tagArray = endArray.map { [=10=].asset_tag }
print(tagArray)
} catch { print(error) }