ios - onFormat string For NSPredicate

标签 ios swift nspredicate format-string

我想用“id”键对数据进行排序,我如何理解NSPredicate 格式的格式字符串是什么?我有一个 100 号码的帖子。 我的代码:

 let objectIDs = posts.map{$0.id}
    let predicate = NSPredicate(format: "self IN %@", objectIDs)
    let sortByUserId = NSSortDescriptor(key: "id", ascending: true)

我的描述有误:

can not parse "self IN %@" format string.

解析 JSON 数据的代码:

func postsFromJSONData(data : NSData, inContext context: NSManagedObjectContext) -> PostResult {
            do{
            let jsonObject : [[String:AnyObject]]
            = try NSJSONSerialization.JSONObjectWithData(data, options: []) as! [[String:AnyObject]]

            for postJSON in jsonObject {
                if let post = postFromJsonObject(postJSON, incontext : context) {

                        finalPost.append(post)
                    }
                }

            return .Sucsess(finalPost)
            }
            catch let error {
                return .Failure(error)
            }

        }

当网络服务完成时获取主队列帖子:

func fetchRecentPost(completion completion: (PostResult) -> Void){

    let request = NSURLRequest(URL: recentPostURL(["":""]))

let task = session.dataTaskWithRequest(request, completionHandler: {
    (data, response, error)  in

    var result = self.processRecentPostRequest(data: data, error: error)

    if case let .Sucsess(posts) = result {

        let mainQueueContext = self.coreDataStack.mainQueueContext
        mainQueueContext.performBlockAndWait(){

            try! mainQueueContext.obtainPermanentIDsForObjects(posts)
        }

        let objectIDs = posts.map{$0.id}
        let predicate = NSPredicate(format: "self IN %@", objectIDs)
        let sortByUserId = NSSortDescriptor(key: "id", ascending: true)

        do{
            try self.coreDataStack.saveChanges()
            let mainQueuePosts = try self.fetchMainQueuePosts(predicate: predicate, sortDiscriptors: [sortByUserId])
            result = .Sucsess(mainQueuePosts)
        }
        catch let error {

            result = .Failure(error)
        }
    }

        completion(result)

        })

最佳答案

你的预测应该是这样的

let predicate = NSPredicate(format: "id IN %@", objectIDs)
let sortByUserId = NSSortDescriptor(key: "id", ascending: true)

注意:要么是self.id IN %@,要么是id IN %@

关于ios - onFormat string For NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44365700/

相关文章:

ios - Swift 5 反射获取类属性列表并调用它们

ios - 如何在 View 中显示所有 Apple 表情符号?

ios - Swift:SKLabelNode 淡入淡出动画不淡出

cocoa - 使用 @avg 集合运算符格式化 NSPredicate 的字符串

ios - 添加 xib tableview 单元格的 subview (swift)

ios - 界面堆栈 View ;元素之间和外部元素的间距相等

ios - 如何获取 UIStackView 内的 UIView 的宽度值

ios - 从 UIView 转换后的 PDF 不完整

swift - 检查字典是否包含 Swift 中的值

ios - 在格式字符串之外使用 NSPredicate 的 SELF