2016-09-17 20 views
0

我想用「id」鍵排序數據,我怎麼理解NSPredicate格式的格式字符串是什麼?我有一個100號的帖子。 我的代碼:onFormat string對於NSPredicate

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

我有此內容的錯誤:

無法解析 「自我IN%@」 格式字符串。用於解析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) 
      } 

     } 

獲取主隊列崗位當Web服務完成:

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) 

     }) 
+0

顯示你想要排序的數據! – Lion

+0

你的問題不清楚,如果你只想排序數組,你可以這樣做。 'var sortedPosts = posts.sort({$ 0.id <$ 1.id})' –

+0

我想解析這個JSON並保存核心數據中的帖子數據http://jsonplaceholder.typicode.com/posts/ – ava

回答

1

你predicte應該是這樣的

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

備註:可以是self.id IN %@id IN %@

+0

我是否需要不對數據進行排序?任何時候我的應用程序運行我的數據添加到數據庫文件中最後保存的數據,爲什麼會發生這種情況? – ava

+0

如果您的數據不是按順序排序的,您是否正在使用謂詞獲取數據? –

+0

我的JSON是用userID排序的,是的,我得到數據,但是當任何時候應用程序再次啓動數據,並再次添加到數據庫時,我的數據庫中的帖子現在超過1000. – ava