问题标签 [nsorderedset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
305 浏览

swift - 无法使用非集合对象执行集合评估

当我执行 segue 时,我将所有季节从选定的节目传递到下一个 ViewController。

如果我尝试使用 NSPredicate 获取请求,我会崩溃。(2019-02-04 11:10:48.766456+0100 电视[16295:659978]*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Can't perform collection evaluate with non-collection object.')

xcdatamodeld 问题是我第一次选择一个电视节目并执行 segue 时,它​​运行良好,如果我回去选择另一个电视节目,它会抛出该错误。

+

pTelevisionShow?.seasons 是 NSOrderedSet

xcdatamodeld 解决方案:

0 投票
1 回答
34 浏览

core-data - 子 NSManagedObjectContext 中的 NSOrderedSet 在保存时会丢失顺序

我有一些具有一对多父子关系的 NSManagedObjects,其中“children”属性是 NSOrderedSet。

当我创建一个新的孩子时,我在一个孩子 NSManagedObjectContext 中这样做。我在子集的索引 0 处插入子元素。

在我保存子上下文之前,我观察到父母的孩子看起来像:

家长

  • 孩子1
  • 孩子2
  • Kid3
  • Kid4(新)

但是当我继续保存父上下文时,我检查了“updatedObjects”属性,发现父级的子级排序不正确!

家长

  • 孩子1
  • 孩子2
  • Kid3
  • Kid4(新)

注意:这只发生在新创建的孩子身上。如果在我创建子上下文时孩子已经存在,我可以更改它们在子上下文中的顺序,并且它们在有序集中的位置会适当地保存在父上下文中。

我试过搞乱父子上下文的合并策略。现在它们被配置为默认的错误策略,保存时不会抛出任何错误。

0 投票
2 回答
2552 浏览

foreach - NSOrderedSet 和 SwiftUI ForEach

我正在尝试使用 CoreData 和 SwiftUI 并有两个实体;狗和步行。Dog 之间是一对多的关系

和走

我遇到的问题是在列表中显示选定狗的所有步行。下面的 WalksView 将显示所有当前的 walk

但是当我添加一个新的应用程序时,应用程序崩溃并出现以下错误:

如果我尝试在这样的步行中进行 ForEach:

有人告诉我

0 投票
1 回答
119 浏览

ios - 将新的核心数据对象插入到多个 NSOrderedSet 会忽略索引

将新的核心数据实体 (EntityB) 插入另一个实体 (EntityA) 的 NSOrderedSet 关系属性时,我遇到了一种奇怪的行为;被index忽略并且对象总是被插入到有序集的末尾。

插入的对象是现有对象的副本,使用使用自定义副本初始化程序创建的不同父实体:

entityBs在插入之前:

entityBsnewEntity2在索引 2 处插入后:

我已经确认这在' 内容index的范围内。entityBs

EntityA 使用 Core Data Generated Accessors,但我也尝试通过键值编码方法手动插入对象 - 发生同样的问题。这让我想知道这是否是 NSOrderedSet 上的问题,而不是核心数据问题。

我不知道为什么会这样,所以欢迎任何信息!

0 投票
1 回答
644 浏览

swift - 使用 SwiftUI ForEach 从 NSOrderedSet 获取字符串值

使用这个问题/答案,我可以使用 ForEach 来使用从 CoreData 中的一对多关系创建的 NSOrderedSet,但是我似乎无法访问存储在 Core Data 实体中的字符串属性。

我有两个 CoreData 实体:Client 和 SessionNote。Clients可以有多个SessionNotes,clientNotes的NSOrderedSet,SessionNote只能有一个Client。

客户端+CoreDataClass.swift:

客户端+CoreDataProperties.swift:

SessionNote+CoreDataClass.swift:

SessionNote+CoreDataProperties.swift:

这是ClientDetailView.swift:

我已经尝试过Text("\(note.noteText ?? "")"),但它会引发以下错误:

“AnyHashable”类型的值没有成员“noteText”

当我尝试Text("\(self.selectedClient.clientNotes!.value(forKeyPath: \SessionNote.noteText))")时,它会引发以下错误:

协议类型“任何”不能符合“_FormatSpecifiable”,因为只有具体类型才能符合协议

是否有为每个 SessionNote noteText 实体显示不同的字符串值?

0 投票
2 回答
1308 浏览

arrays - 如何在本机 Swift 中实现以前称为 NSMutableOrderedSet 的可变有序集泛型类型?

我正在尝试实现一个通用的 Mutable Ordered Set 类型,它需要符合许多协议才能与 Swift 中的 Array 和 Set 行为相同。首先要实现泛型类型元素需要符合,泛型Hashable结构需要符合RandomAccessCollection, SetAlgebra, ExpressibleByArrayLiteral,AdditiveArithmetic和。我还想允许下标访问它添加对,和的支持。RangeReplaceableCollectionMutableCollectionSubSequencePartialRangeThroughPartialRangeUpToPartialRangeFromUnboundedRange

这是我的通用OrderedSet结构声明:

尽管这是一个自我回答的问题,但我非常感谢并鼓励新的答案,对此实施的一些反馈和/或有关如何修复/改进它的建议:

编辑/更新:

sorted方法按预期工作,但sort它的变异甚至没有改变元素顺序。

可变集合

声明突变

函数排序()

当 Self 符合 RandomAccessCollection 且 Element 符合 Comparable 时可用。

我该如何解决?

0 投票
1 回答
610 浏览

swift - 如何在 SwiftUI 中从 FetchedResults (CoreData) 中获取 NSOrderedSet

我正在尝试在 SwiftUI 中使用 ForEach,而我的 NSOrderedSet 来自 FetchedResult。已经尝试过以下代码(来自此响应

withChilds 是定义的关系(核心数据 - 一张卡片有很多孩子)。

卡内:

我的查看代码

错误代码 在此处输入图像描述

0 投票
1 回答
109 浏览

swift - 在 NSManagedObject 编辑上更新 SwiftUI 视图

我正在尝试更新 NSManagedObject ( Training) 的属性更新的 SwiftUI (子) 视图。该属性是一个 NSOrderedSet ( exerciceHistories)。

Training

主视图是TrainingDetail,显示详细信息Training

有趣的部分TrainingDetailExercices,编辑表打开的地方:

TrainingAddExercice 是显示的表格,我们可以在其中编辑训练属性 NSOrderedSet ( exerciceHistories) 的一个元素:

保存和关闭工作表的功能TrainingAddExercice

我不明白的一件事是,当我向 training.exerciceHistories 添加/删除一个 ExerciceHistory 时,查看更新,但在我编辑一个时却没有,所以我试图通过创建新的 OrderedSet 来强制执行。

对象在 CoreData 中得到了很好的更新。

0 投票
1 回答
173 浏览

swift - 根据在不同 NSOrderedSet 中指定的顺序重新排序 NSOrdered Set

所以,我有两个有序集合,事物的结构方式是一个有序集合基本上有一个字典列表,另一个有序集合有与字典中某个值相对应的字符串。让我用一个例子来说明:

OrderedSetA = [["key1": "test", "key2": "A"], ["key1": "test2", "key2": "B"], ["key1": "test3", "key2":"C"], ["key1": "test4", "key2": "E"]]
OrderedSetB = ["B","G","H", "A", "E", "D", "C", "F", "J", "K"]

所以,现在我基本上想根据为与 OrderedSet B 中对应的字符串指定的顺序重新排列 OrderedSetA 中的元素,key2同时忽略 B 中不在 A 中的任何值。例如,在这种情况下,我d 正在寻找的东西是这样的:

OrderedSetC = [["key1": "test2", "key2": "B"], ["key1": "test1", "key2": "A"], ["key1": "test4", "key2":"E"], ["key1": "test3", "key2": "C"]]

这是我到目前为止所尝试的:

let orderedSetC = orderedSetA.filter {OrderedSetB.contains(($0 as AnyObject).key2)}

这里发生的事情是它只返回相同的东西,我想我是根据 OrderedSetB 过滤的,它不在 OrderedSetA 中,但是没有排序/重新排序发生。

基于 Swift 5 的最合适和最有效的处理方式是什么?

谢谢!