在核心数据中获取 Swift._SwiftDeferredNSArray' (0x1096d26b8) 到 'NSMutableArray

Posted

技术标签:

【中文标题】在核心数据中获取 Swift._SwiftDeferredNSArray\' (0x1096d26b8) 到 \'NSMutableArray【英文标题】:getting Swift._SwiftDeferredNSArray' (0x1096d26b8) to 'NSMutableArray in Core Data在核心数据中获取 Swift._SwiftDeferredNSArray' (0x1096d26b8) 到 'NSMutableArray 【发布时间】:2016-10-18 10:23:14 【问题描述】:

我正在使用 Swift 3.0 并使用 Core Data 来存储信息。我在NSManagedObject 中获取用户详细信息,因此为了显示数据,我希望它在NSMutableArray 中转换,但它显示运行时错误,但它与NSArray 一起工作正常

我正在努力寻找这个错误,但没有得到确切的问题。

任何形式的帮助都将不胜感激!!!

【问题讨论】:

为什么要在 NSMutableAraay 中转换?您可以使用 swift 的“数组”来实现。 您好,其实我是 swift 新手,来自 Objective C 背景,所以我不了解这个“Array swift”的用法 【参考方案1】:

我们可以使用 NSMutableArray 可以做的“Array”来执行所有的操作。

    let strConstant = " Wolverine"
    let birthDate = "17/5/91"
    let birthYear = 1991
    let currentyear = 2016

假设上面是我们需要在 Swift3.0 中使用“Array”和“NSMutableArray”处理的值

所以下面我创建了一个基本操作,你可以使用 Array 和 NSMutableArray 来执行,在这两种情况下输出都是一样的。

你可以把 Coding 部分放在任何 Playground 中,你可以在哪一行执行哪一个任务。

使用 Swift Array 处理操作:

var newRatingList = [Any]()
newRatingList.append(strConstant)
newRatingList.append(birthDate)
newRatingList.append((currentyear - birthYear))
newRatingList.last
newRatingList[1] = "18/5/91"
newRatingList

使用 NSMutableArray 处理操作:

var mutableArray = NSMutableArray()
mutableArray.add(strConstant)
mutableArray.add(birthDate)
mutableArray.add((currentyear - birthYear))
mutableArray.lastObject
mutableArray.replaceObject(at: 1, with: "18/05/91")

要了解数组的工作原理,您还可以参考以下链接: https://makeapppie.com/2016/06/23/how-to-use-arrays-in-swift-3-0/

现在与您的问题相关,请考虑这是一个示例

var locations  = [Locations]() // Where Locations = your NSManaged Class

var fetchRequest = NSFetchRequest(entityName: "Locations")
locations = context.executeFetchRequest(fetchRequest, error: nil) as [Locations]

// Then you can use your properties.
for location in locations 
  print(location.name)   

在上面的示例中,您将获得一个 Swift 数组 位置。因此,通过应用 For-in 循环,您可以获得单个属性,如果您想将其转换为数组,那么您可以执行以下操作,

var a = NSMutableArray()
for location in locations 
    var dictionary = [String:AnyObject]()
    dictionary["name"] = location.name
    dictionary["location"] = location.location
    a.addObject(dictionary)

最后,你会得到一个包含字典的“a”NSMutableArray。

希望对你有帮助!

【讨论】:

非常棒且详细的答案,我非常需要,感谢您的帮助@Wolverine @priyanshu Welcome..请将其标记为答案,它已解决您的疑问。谢谢。

以上是关于在核心数据中获取 Swift._SwiftDeferredNSArray' (0x1096d26b8) 到 'NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

如何在核心数据swift 3中同时保存和获取

swift 3 - 核心数据关系 - 获取数据

如何在 IOS Swift 中获取核心数据中的多对多关系?

NSSortDescriptor 从 Swift 4 的核心数据中获取密钥

Swift 从实体(核心数据)获取特定的 NSManagedObject

快速更新核心数据对象 3