从获取请求 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($0.asset_tag) }

这表示tagValues具有类型 [Int] ,并且您正在使用 mapendArray中的每个条目获取一个值来分配一个值。该值是通过查找每个条目上的asset_tag值来找到的。结果是一个对应于asset_tag值的Int数组。

首先,

如果您使用的是NSManagedObject子类,请使用特定的获取请求来避免类型转换。NSFetchRequest是引用类型。将请求声明为常量 ( let (。

获取请求始终返回实体[NSManagedObject]数组。垃圾很重要。该对象可以包含许多属性和关系。

要获取特定属性的数组,请使用 map 函数

var endArray = [Device]()
let request : NSFetchRequest<Device> = Device.fetchRequest()
request.returnsObjectsAsFaults = false
do {
    endArray = try context.fetch(request)
    let tagArray = endArray.map { $0.asset_tag }
    print(tagArray)
} catch { print(error) }

相关内容

  • 没有找到相关文章

最新更新