小编Bri*_*ter的帖子

NSPredicate对多对多关系不区分大小写的匹配

我正在实现一个搜索字段,用户可以在其中键入字符串以过滤视图中显示的项目.显示的每个对象都有一个keywords多对多关系,我希望能够根据关键字过滤对象.每个关键字对象都有一个name属性,所以我设置了一个NSPredicate来进行如下所示的过滤:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS %@", self.searchString];
Run Code Online (Sandbox Code Playgroud)

这有效,但问题是搜索区分大小写,因此如果关键字具有大写字母但用户输入全部小写,则不会找到匹配项.我尝试过以下修改:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS[c] %@", self.searchString];
Run Code Online (Sandbox Code Playgroud)

但这对匹配的区分大小写没有任何影响.有没有办法只使用普通谓词来进行不区分大小写的匹配?或者我是否需要在关键字类上实现某种自定义访问器,例如编写一个lowercaseName方法并匹配较低版本的搜索字符串?

附录:经过进一步探索后,添加自定义访问器的解决方法适用于手动使用NSPredicate,但在将NSFetchRequest与Core Data一起使用时根本不起作用,这仅在查询Core Data模型中定义的属性时有效.

cocoa core-data objective-c

65
推荐指数
4
解决办法
6万
查看次数

如何在Interface Builder的"库"窗口中将项目添加到"用户媒体"类别?

Interface Builder中的"库"窗口提供了一个"媒体"选项卡,其中列出了可以从nib文件中引用的各种图像和声音资源.有一个"系统媒体"项目列出了OS X提供的默认图像,如果您的笔尖是Xcode项目的一部分,您还可以浏览Xcode项目中包含的图像/声音.

还有一个名为"用户媒体"的第三个项目,但至少对我来说,那里没有列出任何内容,似乎没有任何方法可以添加新项目.我已经尝试将图像拖动到窗口,没有任何效果,并且在硬盘驱动器上找不到可能存储此类图像的任何明显位置.我如何将项目添加到此列表中,以便在Interface Builder中使用它们?

cocoa interface-builder

9
推荐指数
1
解决办法
3358
查看次数

为什么这个带有两个枚举的Swift switch语句并不详尽?

我正在编写一些Swift代码(Swift 3.1,Xcode 8.3.2),它可以打开两个枚举.我相信我已经写了一份详尽的案例清单,但编译器不同意我的观点.我的代码有点复杂,有一些相关的值等,所以我把它简化为一个简单的例子,就像我在操场上一样,如下:

enum Test {
    case one
    case two
    case three
    case four
}

let allValues: [Test] = [.one, .two, .three, .four]
let test1 = Test.one
let test2 = Test.two

for i in 0..<4 {
    for j in 0..<4 {
        let test1 = allValues[i]
        let test2 = allValues[j]
        switch (test1, test2) {
        case (.one, _):
            print("one, _")
        case (_, .one):
            print("_, one")
        case (.two, _):
            print("two, _")
        case (_, .two):
            print("_, two")
        case (.three, .three):
            print("three, three")
        case (.three, …
Run Code Online (Sandbox Code Playgroud)

enums switch-statement swift

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

除了自己的文件类型弹出按钮外,还向 NSDocument 的保存面板添加附件视图

我有一个NSDocument可以保存为多种文件类型的基于应用程序,因此在保存文档时,NSDocument 有助于将弹出按钮添加到保存面板作为其附件视图,让用户选择他们想要保存的类型。好的。

现在,我有另一个视图要包含在保存面板中,但是如果我只是覆盖-[NSDocument prepareSavePanel:]并用于-setAccessoryView:插入我自己的视图,它会替换文件类型弹出按钮,因此只有我的视图出现在保存面板而不是弹出按钮。

有没有什么办法NSDocument提供同时拥有我自己的观点其文件类型弹出出现在保存面板在同一时间?看起来我可以抓住现有的附件视图,将它与我自己的附件一起修补到容器视图中,然后将其放回,但这似乎很hackish,并且想知道是否有更好的方法来做到这一点,我已经错过了。

macos cocoa nsdocument

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

克隆git存储库时如何自动保留别名?

我在我的git存储库的配置文件中设置了一堆方便的别名.我偶尔会克隆这个存储库(例如我的笔记本电脑),但是克隆没有包含我设置的任何别名,可能是因为克隆没有复制存储别名的git配置文件.但是,我希望在使用克隆时可以使用这些别名,而无需再次手动设置它们.有人找到了一个很好的解决方案吗?

git alias clone

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