作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用带有 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/
我是一名优秀的程序员,十分优秀!