2015-02-01 2 views
2

Итак, я могу читать информацию из своей базы данных, когда (в симуляторе) я вошел в свой iCloud, однако, у всех, у кого есть мое приложение, будет (очевидно) не быть. При попытке доступа к базе данных, когда Im не вошли в систему, появляется сообщение об ошибке:Быстрое чтение CloudKit, когда не вошел в систему iCloud

<CKError 0x7fc1e3416510: "Request Rate Limited" (7/2008); "This operation has been rate limited"; Retry after 3.0 seconds> 

следуют:

Error Domain=NSCocoaErrorDomain Code=4097 "The operation couldn’t be completed. (Cocoa error 4097.)" (connection to service named com.apple.cloudd) UserInfo=0x7fc1e352f800 {NSDebugDescription=connection to service named com.apple.cloudd} 

Код:

//VARIABLES******************************************************** 

@IBOutlet var questions: UILabel! 
var resultsOfDB : String = "" 
var indexes : [Int] = [] 
var counter : Int = 0 
var newStr : String = "" 
//***************************************************************** 

@IBAction func getNewQbutton(sender: AnyObject) { 

    let container = CKContainer.defaultContainer() 
    var publicDB = container.publicCloudDatabase 


    let myQuery = CKQuery(recordType: "QuestionsTable", predicate: NSPredicate(value: true)) 


    publicDB.performQuery(myQuery, inZoneWithID: nil){ 
     results, error in 

     if error != nil { 
      println(error) 
     } 

     else 
     { 

      dispatch_async(dispatch_get_main_queue(), {() -> Void in 

       self.resultsOfDB = results.description 

       //for each character in resultsOfDB 
       for character in self.resultsOfDB{ 

        if(character == "\""){ 
         self.indexes.append(self.counter) 

        } 
        self.counter++ 
       } 


       self.newStr = self.resultsOfDB.substringWithRange(Range<String.Index>(start: advance(self.resultsOfDB.startIndex, self.indexes[0] + 1), end: advance(self.resultsOfDB.endIndex, -(self.counter - self.indexes[1])))) 

       self.questions.text = self.newStr 
      }) 
     } 
    } 

} 

Кто-нибудь знает, как кто-то может прочитать в моей базе данных, когда они не вошли в мою учетную запись iCloud? Благодаря!

+0

Пожалуйста, покажите нам свой код. – Christian

+0

Хорошо, я сделал! Я думал/думаю, что это может быть проблема установки, то есть я неправильно установил базу данных неправильно или что-то в этом роде, поэтому я не был уверен, нужен ли код или нет! – CS8800

+0

по умолчанию права чтения устанавливаются для каждого из типа recordType в вашей публичной базе данных. Пользователь не должен войти в систему, чтобы запросить эти записи. Им нужно войти в свою учетную запись iCloud, если они хотят записывать данные. –

ответ

0

Это ошибка симулятора (команда Apple, вероятно, исправит это в следующих обновлениях). Если ваш симулятор не зарегистрирован в iCloud, эта ошибка произойдет. Однако эта ошибка не будет возникать в виртуальном устройстве, даже если это устройство не имеет iCloud, зарегистрированного в

0

Публичная база данных доступна только для чтения без входа в производственную среду, а не в среду разработки.

документация Apple, говорит:

В развитии, когда вы запустите приложение с помощью Xcode на тренажере или устройства, вам необходимо ввести учетные данные ICloud для чтения записей в публичной базе данных. В производстве разрешения по умолчанию позволяют пользователям, не прошедшим проверку подлинности, читать записи в общедоступной базе данных, но не позволяют им записывать записи.

См. CloudKit Quick Start.

Смежные вопросы