2017-10-06 92 views
0

我有一個分段的控制與四個不同的段,並希望一次獲取多個記錄類型。只能設法一次取一個。想要獲取所有4種記錄類型,請使用分段控件將其顯示在相應的表格中。反正有辦法。我對Swift和iOS相當陌生。從CloudKit獲取多個記錄類型

@IBOutlet weak var segmentControl: UISegmentedControl! 

let recordType = "WebBooks" 

var web = [CKRecord]() 
var mobile = [CKRecord]() 
var windows = [CKRecord]() 
var databases = [CKRecord]() 

func fetchBooksFromCloud() { 
     let cloudContainer = CKContainer.default() 
     let publicDatabase = cloudContainer.publicCloudDatabase 
     let predicate = NSPredicate(value: true) 
     let query = CKQuery(recordType: recordType, predicate: predicate) 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    var returnValue = 0 

    switch segmentControl.selectedSegmentIndex { 
    case 0: 
     returnValue = web.count 
    default: 
     break 
    } 
    return returnValue 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: 
    "CategoriesCell", for: indexPath) as! HomeTableViewCell 

    switch segmentControl.selectedSegmentIndex { 
    case 0: 

     let webBooks = web[indexPath.row] 

     cell.bookName.text = web.object(forKey: "name") as? String 
     cell.authorName.text = web.object(forKey: "author") as? String 

     if let image = web.object(forKey: "image") { 
      let imageAsset = image as! CKAsset 

      if let imageData = try? Data.init(contentsOf: imageAsset.fileURL) { 
       cell.bookImageName.image = UIImage(data: imageData) 
      } 
     } 
    default: 
     break 
    } 
    return cell 
} 

回答

1

更多參考:iCloud in Swift

func getResults(){ 

     let container = CKContainer.default() 
     let privateDatabase = container.privateCloudDatabase 
     let predicate = NSPredicate(value: true) 
     let query = CKQuery(recordType: "UserDetails", predicate: predicate) 

     privateDatabase.perform(query, inZoneWith: nil) { (results, error) -> Void in 
      if error != nil { 
       print(error?.localizedDescription) 

       MBProgressHUD.hide(for: self.view, animated: true) 
      } 
      else { 
       print(results) 

       for result in results! { 
        self.arrayDetails.append(result) 
       } 

       OperationQueue.main.addOperation({() -> Void in 
        self.tableView.reloadData() 
        self.tableView.isHidden = false 
        MBProgressHUD.hide(for: self.view, animated: true) 
       }) 
      } 
     } 

} 
+1

那被獲取在時間'UserDefaults'只有一個記錄類型。我想一次取多個 – user6574269

+0

您可以使用多個對象獲取結果數組。 –