标签: nsorderedset

如何为NSOrderedSet添加元素以获取Core Data?

我对这篇文章做了一些研究.但它的解决方案都不适合我.让我解释一下我做了什么:

在此输入图像描述

它实际上与上述帖子非常相似.

Category.h

@class Category, Item;

@interface Category : NSManagedObject

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSOrderedSet *items;
@property (nonatomic, retain) Category *parentcategory;
@property (nonatomic, retain) NSSet *subcategories;

@end

@interface Category (CoreDataGeneratedAccessors)

- (void)insertObject:(Item *)value inItemsAtIndex:(NSUInteger)idx;
- (void)removeObjectFromItemsAtIndex:(NSUInteger)idx;
- (void)insertItems:(NSArray *)value atIndexes:(NSIndexSet *)indexes;
- (void)removeItemsAtIndexes:(NSIndexSet *)indexes;
- (void)replaceObjectInItemsAtIndex:(NSUInteger)idx withObject:(Item *)value;
- (void)replaceItemsAtIndexes:(NSIndexSet *)indexes withItems:(NSArray *)values;
- (void)addItemsObject:(Item *)value;
- (void)removeItemsObject:(Item *)value;
- (void)addItems:(NSOrderedSet *)values;
- (void)removeItems:(NSOrderedSet *)values;
- (void)addSubcategoriesObject:(Category *)value;
- (void)removeSubcategoriesObject:(Category *)value;
- (void)addSubcategories:(NSSet …
Run Code Online (Sandbox Code Playgroud)

core-data ios5 nsorderedset

8
推荐指数
2
解决办法
1万
查看次数

Swift 2.0一对多关系 - 仍然是NSOrderedSet?

在Swift 2.0中,Core Data中的一对多关系仍然是NSOrderedSets吗?

我似乎无法适当地投射/投降以至于不会抛出错误.

有人在Swift 2.0中有一个简单的例子吗?

core-data ios nsorderedset swift

8
推荐指数
1
解决办法
2362
查看次数

如何使用NSOrderedSet的顺序对NSFetchedResultsController的结果进行排序

NSOrderedSets保存表中对象的顺序.如果使用属性为NSOrderedSet访问NSManagedObject子类实例,则它们将按顺序排列.

但是,在创建NSFetchRequest时,似乎无法使用NSSortDescriptor访问该订单.

它从原始SQLite DB中显示,该顺序存储在名为的字段中Z_FOK_<relationship name>.数据可用,但通过核心数据API似乎看不到.

有没有人知道编写NSSortDescriptor的方法,该NSSortDescriptor将与SQLite DB一起以NSOrderedSet指定的顺序返回结果?


更新

相关问题:NSFetchedResultsController和NSOrderedSet关系

iphone core-data ios nsorderedset

6
推荐指数
1
解决办法
1048
查看次数

从 Core Data 中检索 NSOrderedSet 并将其转换为实体 ManagedObjectSubclasss

我的设计

我正在制作一个健身应用程序来学习核心数据,我发现我需要让用户将每次执行的锻炼存储为锻炼日志项,并且其中应该有一系列代表该锻炼表现的锻炼日志(它包含每个举重动作以及实际练习设计的参考)。

问题是,过了一会儿我意识到我需要对这些进行排序,以便下次我想向用户展示他们的锻炼时,执行练习的顺序应该相同。

所以我检查了图像右上角的“ordered”,现在我的代码急需更新。我尝试尽可能多地阅读有关使用NSOrderedSet以及如何从核心数据中获取它们然后操作它们的内容,但我并没有真正发现对我有多大用处。(我没有 Objective-c 的经验)

例如我以前的代码是:

static func deleteWorkoutLog(_ workoutLogToDelete: WorkoutLog) {

    guard let exerciseLogsToDelete = workoutLogToDelete.loggedExercises as? Set<ExerciseLog> else {
        print("error unwrapping logged exercises in deleteWorkoutLog")
        return
    }
Run Code Online (Sandbox Code Playgroud)

我收到错误: .../DatabaseFacade.swift:84:77: Cast from 'NSOrderedSet?' 不相关的类型“设置”总是失败

所以我学到的关于集合和核心数据的知识似乎不再适用。

我远不是编程专家,但我非常渴望学习如何访问实例loggedExercises

太长了;有没有办法将 NSOrderedSet 转换为我可以使用的东西?我们通常如何使用核心数据中的 NSManagedSets ?我们是否将它们转换为数组或可变集?我非常感谢一个或两个关于如何开始检索和使用这些有序集的示例!

谢谢

core-data nsorderedset swift

6
推荐指数
1
解决办法
3007
查看次数

NSOrderedSet 和 SwiftUI ForEach

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

public class Dog: NSManagedObject, Identifiable {
  @NSManaged public var name: String?
  @NSManaged public var walks: NSOrderedSet?
}
Run Code Online (Sandbox Code Playgroud)

和步行

public class Walk: NSManagedObject, Identifiable {
  @NSManaged public var date: Date?
  @NSManaged public var dog: Dog? 
}
Run Code Online (Sandbox Code Playgroud)

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

struct WalksView: View {
@ObservedObject var dogWalksVM:DogWalkVM
var selectedIndex:Int
var body: some View {
    let currentDog = dogWalksVM.dogs[selectedIndex]
    return  List {
        if currentDog.walks == nil {
            EmptyView()
        } else {
            ForEach(0..<currentDog.walks!.count) { index in
                Text("Date \(self.walkDate(currentDog.walks![index] as! Walk))") …
Run Code Online (Sandbox Code Playgroud)

foreach nsorderedset swiftui

5
推荐指数
2
解决办法
3951
查看次数

使用NSArrayController管理有序核心数据关系

所有那些"NSOrderedSet后来被添加,因此不必与其他组件一起玩"错误让我发疯...

(https://twitter.com/kubanekl/status/413447039855640576)

我有两个托管对象和它们之间有序的1:N关系,它由一个实例(或更精确的子类)支持NSOrderedSet.我想使用a来管理这种关系NSArrayController,以便从它提供的功能中获益(选择管理,内容绑定,视图绑定等NSTableView).

由于NSOrderedSet不是子类NSSet,contentSet绑定NSArrayController不适用于该关系.我发现了以下主题并试图实现那里提到的建议.

第一个建议是使用contentArray绑定和值转换器将有序集转换为数组.这个解决方案的问题是每次进行更改时重新分配内容,这不是我想要的.

在提到的线程中提供的第二个建议是使用contentArray绑定并将@array操作符应用于模型密钥路径.我已经尝试过,但是当通过添加/删除对象时根本没有触及底层关系NSArrayController.

我发现的另一个选项是使用带contentSet绑定的排序描述符.这将需要使关系无序,以便使contentSet绑定工作并引入特别用于管理订单的新属性.这还需要一个自定义排序机制来实现,它会搞砸模型.老实说,我想避免这个解决方案.

我的问题很清楚:有没有办法管理有序的核心数据关系NSArrayController?如果是这样,哪种方法尽可能少引起疼痛?

cocoa core-data nsarraycontroller cocoa-bindings nsorderedset

4
推荐指数
1
解决办法
1657
查看次数

使用NSSortDescriptor对NSOrderedSet进行排序

执行此代码时:

NSSortDescriptor *sortDescriptor = [Characteristic sortDescriptor];
[workingSet sortUsingComparator:[sortDescriptor comparator]];
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

*** -[NSMutableOrderedSet sortUsingComparator:]: comparator cannot be nil
Run Code Online (Sandbox Code Playgroud)

sortDescriptor 是非零,所以我不知道为什么这不起作用.

我可以使用下面的代码解决问题,它完美地运行:

NSSortDescriptor *sortDescriptor = [Characteristic sortDescriptor];
NSArray *workingArray = [[workingSet array] sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
workingSet = [NSMutableOrderedSet orderedSetWithArray:workingArray];
Run Code Online (Sandbox Code Playgroud)

cocoa cocoa-touch nssortdescriptor nsorderedset

3
推荐指数
1
解决办法
6061
查看次数

是 - [NSOrderedSet indexesOfObjectsPassingTest:]真的返回NSIndexSet或NSNotFound吗?

我有这个代码:

NSIndexSet *indexes = [anOrderedSet indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
        if([self testObj: obj]) return YES;
        else return NO;
    }];

    if(indexes == NSNotFound) NSLog(@"No objects were found passing the test");
Run Code Online (Sandbox Code Playgroud)

这导致Xcode发出警告,指出"指针和整数之间的比较('NSIndexSet*'和'int')".我完全赞同Xcode.

但是,该函数的返回值是类型NSIndexSet*,Apple文档(http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSOrderedSet_Class/Reference/Reference.html)指出:

返回值
通过谓词指定的测试的有序集中对应值的索引.如果有序集中没有对象通过测试,则返回NSNotFound .."

那么当函数的返回类型是指针时,返回NSNotFound(这是一个NSInteger)的处理是NSIndexSet什么?通过将比较更改为以下来禁止警告是否安全:

if(indexes == (NSIndexSet*) NSNotFound) NSLog(@"No objects were found passing the test");
Run Code Online (Sandbox Code Playgroud)

因为从理论上讲,索引可能是一个有效的返回NSIndexSet指针,恰好指向一个等于的内存地址NSNotFound,对吗?

cocoa-touch objective-c nsorderedset

3
推荐指数
1
解决办法
1108
查看次数

如何将唯一对象添加到 nmutablearray?

我有一个带有 NSStrings 的 NSObject。如何仅将具有唯一 obj.name 的对象添加到 NSMutableArray?我试过 NSOrderedSet 但它只有在你将 NSString 添加到数组而不是包含 NSString 的对象时才有效。

例子。

@@interface MyObject : NSObject
@property (strong, nonatomic) NSString *name;
@end


NSMutableArray *array = {MyObject.name,MyObject.name,MyObject.name};
Run Code Online (Sandbox Code Playgroud)

如何确保没有两个 MyObject 具有相同的名称?

unique filter nsmutablearray ios nsorderedset

3
推荐指数
1
解决办法
1619
查看次数

Swift 3 - How to declare an NSOrderedSet to use setVocabularyStrings?

I want to use this function's prototype for adding vocabulary to SiriKit. Apple's documentation shows the following sample code:

let workoutNames = self.sortedWorkoutNames()
let vocabulary = INVocabulary.shared()
vocabulary.setVocabularyStrings(workoutNames, of: .workoutActivityName)
Run Code Online (Sandbox Code Playgroud)

According to the documentation, I need to use an NSOrderedSet type for self.sortedWorkoutNames().

How to declare it and set it with an array of Strings?

EDIT: About the context project, I'm using Intents with Siri. The goal here, is to use specific word like 'Benchpress' or …

ios nsorderedset swift sirikit

3
推荐指数
1
解决办法
7597
查看次数

如何在原生 Swift 中实现以前称为 NSMutableOrderedSet 的可变有序集泛型类型?

我正在尝试实现一个通用的 Mutable Ordered Set 类型,它需要符合许多协议才能与 Array 和 Set 在 Swift 中的行为方式相同。首先要做到的是,泛型类型元素的需求,以符合Hashable和通用结构需要顺应RandomAccessCollectionSetAlgebraExpressibleByArrayLiteralAdditiveArithmeticRangeReplaceableCollectionMutableCollection。我想也允许其访问标SubSequence添加支持PartialRangeThroughPartialRangeUpToPartialRangeFromUnboundedRange也。

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

public struct OrderedSet<Element: Hashable> {
    public init() { }
    private var elements: [Element] = []
    private var set: Set<Element> = []
}
Run Code Online (Sandbox Code Playgroud)

尽管这是一个自我回答的问题,但我真的很感激并鼓励提供新的答案、有关此实现的一些反馈和/或有关如何修复/改进它的建议:

编辑/更新:

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

可变集合

声明变异

功能排序()

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

var …
Run Code Online (Sandbox Code Playgroud)

arrays set nsorderedset nsmutableorderedset swift

2
推荐指数
1
解决办法
1038
查看次数

将通用数组转换为NSOrderedSet吗?

我需要分配一个返回值fetch

try! c.fetch(fr)
Run Code Online (Sandbox Code Playgroud)

与多对多关系(itemsWithoutRatingOfLoggedInUser):

Utility.app(c: c).itemsWithoutRatingOfLoggedInUser = try! c.fetch(fr2)
Run Code Online (Sandbox Code Playgroud)

并得到以下错误。我能做什么?我试图与as!运算符进行转换,没有帮助。

在此处输入图片说明

generics core-data ios nsorderedset

0
推荐指数
1
解决办法
1497
查看次数