获取核心数据作为逗号分隔的列表

时间:2019-03-15 13:53:55

标签: arrays swift core-data swift4

我意识到我缺少一些简单的东西,但是作为一名Swift新手,我会四处转转,​​并且很乐意指出我做错了什么?!

我有一个名为“ Numbers”的核心数据实体,带有一个名为“ userNumbers”的属性(Int16)。我正在获取类似的结果:

let appDelegate = UIApplication.shared.delegate as! AppDelegate

    let context = appDelegate.persistentContainer.viewContext

    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Numbers")
    //request.predicate = NSPredicate(format: "age = %@", "12")
    request.returnsObjectsAsFaults = false
    do {
         let result = try context.fetch(request)
        for data in result as! [NSManagedObject] {
            print("\(data.value(forKey: "userNumbers") as! Int16)")
        }

    } catch {            
        print("Failed")
    }

我的控制台中的结果是:

12

13

18

19

21

我需要知道如何使它成为逗号分隔的列表,以便可以在数组中使用它。本质上,我需要返回的值是:12、13、18、19、21

我尝试的一切似乎都错了!

1 个答案:

答案 0 :(得分:0)

首先创建一个更具体的获取请求以获取不同的结果类型

let request = NSFetchRequest<Numbers>(entityName: "Numbers")

用逗号分隔的列表是不可能的,因为userNumbers的类型是数字。

您可以通过以下方式map将结果Int16放入do { let result = try context.fetch(request) // the type is [Numbers] let numberArray = result.map{$0.userNumbers} print(numberArray) } 数组中

this.http.get(`${this.apiUrl}/cinemas/location/cardiff`).pipe(
  map((data: any) => data.cinemas),
  map((cinemalist) => {
    return cinemalist.map(value => <Observable<any>>this.http.get(`https://api.cinelist.co.uk/get/cinema/${value.id}`));
  })
).subscribe(results => {
  console.log(results);
});