gpt4 book ai didi

ios - 如何在 Core Data 谓词中转义问号 '?'

转载 作者:行者123 更新时间:2023-11-28 09:28:43 24 4
gpt4 key购买 nike

我正在尝试使用带有 Assets 库 url 的谓词来获取核心数据对象:

let predicate = NSPredicate(format: "url == %@", imageURL)

其中 imageURL 是一个字符串,例如:assets-library://asset/asset.JPG?id=6E5438ED-9A8C-4ED0-9DEA-AB2D8F8A9360&ext=JPG

在运行时,我总是会遇到异常。但是,如果我从 url 字符串中删除问号,一切正常。

然后我发现:“问号 (?) 字符不是有效的解析器标记。”在 Apple's documentation .

如果我真的需要使用'?',我能做些什么吗?作为我的谓词字符串的一部分?

更新:

起初我以为我的问题与问号有关,因为如果我只删除“?”,应用程序就可以运行了。来自 imageURL。但是后来发现不是,谓词可以转义'?'自动在一些示例代码中。

然后我尝试删除核心数据存储文件,一切正常,所以我认为问题是数据模型不一致造成的

最佳答案

您需要确保该对象是一个字符串。如果 ? 正确包装在字符串对象中,它应该可以工作。

如果它确实是一个字符串,您可以毫无问题地构造谓词和过滤 NSArray。以下工作按预期进行。 (为简单起见,我使用了 self 和一个简单的数组,而不是带有 url 属性的 NSManagedObjects 数组,但机制是相同的。)

let url = "assets-library://asset/asset.JPG?id=6E5438ED"
let predicate = NSPredicate(format: "self = %@", url)!
let array = [ "assets-library://asset/asset.JPG?id=6E5438ED",
"assets-library://asset/asset.JPG?id=48765" ] as NSArray
let filtered = array.filteredArrayUsingPredicate(predicate)

但是,如果您有一个 NSURL 对象,则必须确保获得正确的字符串表示形式。将上面的第一行替换为:

let url = NSURL(string: "assets-library://asset/asset.JPG?id=6E5438ED")!

您需要确保将正确的字符串传递给谓词。

let predicate = NSPredicate(format: "self = %@", url.description)!

以上也按预期工作。

关于ios - 如何在 Core Data 谓词中转义问号 '?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27665804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com