2016-06-12 4 views
1

레코드 유형이 "DiningTypes"입니다. "DiningTypes에는 문자열 인 하나의 필드 유형 만 있습니다. 레코드 5 개가 있습니다. 테이블을로드하는 데 3-4 초가 걸립니다. 어떻게 느려지나요? 배열에서 페칭 프로세스를 시작해야합니까? 이전 컨트롤러는 빠른 UI 응답 시간을 가지고?CloudKit - 하나의 필드 유형으로 5 개의 레코드를 가져 오는 중 ... 3-4 초가 소요됩니다. 왜 그렇게 느린가요?

import UIKit 
import CloudKit 

class table1: UITableViewController { 

var categories: Array<CKRecord> = [] 
var fetchedcategories: Array<CKRecord> = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    func fetchdiningtypes() 

    { 
     let container = CKContainer.defaultContainer() 
     let publicDatabase = container.publicCloudDatabase 
     let predicate = NSPredicate(value: true) 

     let query = CKQuery(recordType: "DiningTypes", predicate: predicate) 


     publicDatabase.performQuery(query, inZoneWithID: nil) { (results, error) -> Void in 
      if (error != nil) 
      { 
       print("Error" + (error?.localizedDescription)!) 
      } 
      else 
      { 
       for result in results! 
       { 
        self.categories.append(result) 
       } 

           } 
     } 

    } 
    fetchdiningtypes() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    return categories.count 
} 
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("dining")  as! table1cell 
    let restaurant: CKRecord = categories[indexPath.row] 
    cell.Name.text = restaurant.valueForKey("Name") as? String 

    return cell 
} 
} 
+0

I'v 자주 시간 당신의 코드가 가능한 한 효율적으로 작성 되었다면 코멘트 개발은 생산보다 훨씬 느립니다. – user3069232

+0

온라인 출판물에서 이것을 보았습니까? 그것은 유망한 것으로 들립니다. –

답변

1

CloudKit 작업을위한 서비스의 기본 품질이 NSQualityOfServiceUtility입니다. 응용 프로그램이 포 그라운드에 있지 않은 경우 요청하면 작업이 실행하는 데 평소보다 오래 걸릴 볼 수 있습니다 실행될 때 .

시도 CKQueryOperation을 사용하고 NSOperationQualityOfServiceUserInitiated에 그 qualityOfService 설정.

+0

deylayed 응답에 대한 사과, NSO 서비스 품질 (QoS) 개시 자습서에 대해 알고 계시겠습니까? –