2016-09-17 6 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) 

나는이 설명에 오류가 있습니다

가 구문 분석 할 수 없습니다를 형식 문자열 "%의 @자가". 구문 분석 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) 

     }) 
+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