【问题标题】:how to convert [NSManagedObject] to nsmutable array (Swift)如何将 [NSManagedObject] 转换为 nsmutablearray (Swift)
【发布时间】:2016-06-06 09:32:33
【问题描述】:

我在我的应用程序中使用 coredata。我在我的核心数据中存储了 50 个城市。现在我想使用搜索栏。这与数组配合得很好。我正在为此使用过滤。这是我的代码

arrcity.enumerateObjectsUsingBlock({ (obj, _, _) -> Void in

            if let city : SelectCityModel = obj as? SelectCityModel
            {
                if city.city.lowercaseString.rangeOfString(self.searchtext.lowercaseString) != nil
                {
                    self.searchcity?.addObject(city)
                }
            }
        })

现在我想做同样的过程,但我有 [nsmanagedobject] 人。那我该怎么做。如果有任何方法可以将 [NsmanagedObject] 转换为 nsmutablearry 会很容易。

这是我的代码

if (people.count > 0)
        {

            people.enumerateObjectsUsingBlock({ (obj, _, _) -> Void in

                if let city : SelectCityModel = obj as? SelectCityModel
                {
                    if city.city.lowercaseString.rangeOfString(self.searchtext.lowercaseString) != nil
                    {
                        self.searchcity?.addObject(city)
                    }
                }
            })

        }

但是这里 var people = NSManagedObject 那么我该如何转换呢?

【问题讨论】:

    标签: ios swift core-data ios9 nsmanagedobject


    【解决方案1】:

    NSMutableArray 与 Swift 数组无关。

    但是你可以使用带有原生枚举器的 Swift 数组,例如

    people.forEach { [unowned self] (object) -> () in
      if object is SelectCityModel
      {
        if object.city.lowercaseString.rangeOfString(self.searchtext.lowercaseString) != nil
        {
          self.searchcity?.addObject(city)
        }
      }
    }
    

    如果 people 始终为 [SelectCityModel],则在 fetch 行中将其转换为该类型,并省略 forEach 闭包中的类型检查。也不需要检查people > 0

    更方便的方法是使用filtermap 函数。

    self.searchcity = people.filter({$0.city.lowercaseString.rangeOfString(self.searchtext.lowercaseString) != nil}).map{ $0.city }
    

    【讨论】:

    • 这是我的获取线 let results = try moc.executeFetchRequest(personfetch) people = results as! [NSManagedObject] @vadian 我如何将它存储在数组中
    • 只要写people = results as! [SelectCityModel]就可以删除object is SelectCityModel检查
    • 它不工作的人是否可以将 Nsmanagedobject 转换为 nsdictionary ??
    • 在 Swift 中,原生集合类型更容易处理。您甚至可以使用filter 函数而不是性能更高的枚举循环。你得到什么错误?
    猜你喜欢
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多