2017-10-06 2 views
0

私は4つの異なるセグメントを持つセグメント化されたコントロールを持っており、一度に複数のレコードタイプをフェッチしたいと思います。一度に1つしか取得できませんでした。 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'にのみ1つのレコードタイプをフェッチします。一度に複数を取得したい – user6574269

+0

複数のオブジェクトで結果の配列を取得できます。 –

関連する問題