问题标签 [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.
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.')
问题是我第一次选择一个电视节目并执行 segue 时,它运行良好,如果我回去选择另一个电视节目,它会抛出该错误。
+
core-data - 子 NSManagedObjectContext 中的 NSOrderedSet 在保存时会丢失顺序
我有一些具有一对多父子关系的 NSManagedObjects,其中“children”属性是 NSOrderedSet。
当我创建一个新的孩子时,我在一个孩子 NSManagedObjectContext 中这样做。我在子集的索引 0 处插入子元素。
在我保存子上下文之前,我观察到父母的孩子看起来像:
家长
- 孩子1
- 孩子2
- Kid3
- Kid4(新)
但是当我继续保存父上下文时,我检查了“updatedObjects”属性,发现父级的子级排序不正确!
家长
- 孩子1
- 孩子2
- Kid3
- Kid4(新)
注意:这只发生在新创建的孩子身上。如果在我创建子上下文时孩子已经存在,我可以更改它们在子上下文中的顺序,并且它们在有序集中的位置会适当地保存在父上下文中。
我试过搞乱父子上下文的合并策略。现在它们被配置为默认的错误策略,保存时不会抛出任何错误。
foreach - NSOrderedSet 和 SwiftUI ForEach
我正在尝试使用 CoreData 和 SwiftUI 并有两个实体;狗和步行。Dog 之间是一对多的关系
和走
我遇到的问题是在列表中显示选定狗的所有步行。下面的 WalksView 将显示所有当前的 walk
但是当我添加一个新的应用程序时,应用程序崩溃并出现以下错误:
如果我尝试在这样的步行中进行 ForEach:
有人告诉我
ios - 将新的核心数据对象插入到多个 NSOrderedSet 会忽略索引
将新的核心数据实体 (EntityB) 插入另一个实体 (EntityA) 的 NSOrderedSet 关系属性时,我遇到了一种奇怪的行为;被index
忽略并且对象总是被插入到有序集的末尾。
插入的对象是现有对象的副本,使用使用自定义副本初始化程序创建的不同父实体:
entityBs
在插入之前:
entityBs
newEntity2
在索引 2 处插入后:
我已经确认这在' 内容index
的范围内。entityBs
EntityA 使用 Core Data Generated Accessors,但我也尝试通过键值编码方法手动插入对象 - 发生同样的问题。这让我想知道这是否是 NSOrderedSet 上的问题,而不是核心数据问题。
我不知道为什么会这样,所以欢迎任何信息!
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 实体显示不同的字符串值?
arrays - 如何在本机 Swift 中实现以前称为 NSMutableOrderedSet 的可变有序集泛型类型?
我正在尝试实现一个通用的 Mutable Ordered Set 类型,它需要符合许多协议才能与 Swift 中的 Array 和 Set 行为相同。首先要实现泛型类型元素需要符合,泛型Hashable
结构需要符合RandomAccessCollection
, SetAlgebra
, ExpressibleByArrayLiteral
,AdditiveArithmetic
和。我还想允许下标访问它添加对,和的支持。RangeReplaceableCollection
MutableCollection
SubSequence
PartialRangeThrough
PartialRangeUpTo
PartialRangeFrom
UnboundedRange
这是我的通用OrderedSet
结构声明:
尽管这是一个自我回答的问题,但我非常感谢并鼓励新的答案,对此实施的一些反馈和/或有关如何修复/改进它的建议:
编辑/更新:
该sorted
方法按预期工作,但sort
它的变异甚至没有改变元素顺序。
可变集合
声明突变
函数排序()
当 Self 符合 RandomAccessCollection 且 Element 符合 Comparable 时可用。
我该如何解决?
swift - 如何在 SwiftUI 中从 FetchedResults (CoreData) 中获取 NSOrderedSet
我正在尝试在 SwiftUI 中使用 ForEach,而我的 NSOrderedSet 来自 FetchedResult。已经尝试过以下代码(来自此响应)
withChilds 是定义的关系(核心数据 - 一张卡片有很多孩子)。
卡内:
我的查看代码
swift - 在 NSManagedObject 编辑上更新 SwiftUI 视图
我正在尝试更新 NSManagedObject ( Training
) 的属性更新的 SwiftUI (子) 视图。该属性是一个 NSOrderedSet ( exerciceHistories
)。
类Training
:
主视图是TrainingDetail
,显示详细信息Training
:
有趣的部分TrainingDetailExercices
,编辑表打开的地方:
TrainingAddExercice 是显示的表格,我们可以在其中编辑训练属性 NSOrderedSet ( exerciceHistories
) 的一个元素:
保存和关闭工作表的功能TrainingAddExercice
:
我不明白的一件事是,当我向 training.exerciceHistories 添加/删除一个 ExerciceHistory 时,查看更新,但在我编辑一个时却没有,所以我试图通过创建新的 OrderedSet 来强制执行。
对象在 CoreData 中得到了很好的更新。
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 的最合适和最有效的处理方式是什么?
谢谢!