2015-04-23 4 views
0

Я пытаюсь выполнить запрос с parse.com, и я бы получил db около 100 объектов за раз. Я использовал код быстрого кода на своем веб-сайте, и приложение не создает этот код. Таким образом, я огляделся и обнаружил, что люди используют код, подобный этому:Parse.com Query with swift 1.2 и строковый массив

var query = PFQuery(className:"posts") 
    query.whereKey("post", equalTo: "true") 
    query.findObjectsInBackgroundWithBlock({ (objects: [AnyObject]?, error: NSError?) -> Void in 
     // do something 


     self.myDataArray = objects as! [String] 

    }) 

Это не работает, потому что я пытаюсь преобразовать PFObject в строку

я должен был бы получить одно одно значение из каждый объект в быстрый массив строк [String]. Как получить только одно текстовое значение вместо PFObject и как его получить в быстром массиве строк?

ответ

1

Я не говорю быстро, но проблема с кодом заключается в том, что он пытается передать возвращенный PFObject в строку, но вы хотите извлечь строковый атрибут, поэтому (если вы действительно этого хотите) :

for object in objects { 
    var someString = object.valueForKey("someAttributeName") as String 
    self.myDataArray.addObject(someString) 
} 

Но, пожалуйста, убедитесь, что вам нужно это сделать. Я заметил, что много новых пользователей синтаксического анализа/swift (особенно те, которые заполняют таблицы) имеют желание отказаться от возвращенных PFObject s в пользу только одного из их атрибутов. Рассмотрите возможность хранения PFObject и извлеките атрибуты позже по мере необходимости. Возможно, вам понадобятся другие атрибуты.

0

Для начала я определенно рекомендую использовать шаблон «if let», чтобы квалифицировать входящие данные. Это хорошая функция Swift, которая поможет избежать ошибок во время выполнения.

var query = PFQuery(className:"posts") 
query.whereKey("post", equalTo: "true") 
query.findObjectsInBackgroundWithBlock(
{ (objects: [AnyObject]?, error: NSError?) -> Void in 

    // check your incoming data and try to cast to array of "posts" objects. 
    if let foundPosts = objects as? [posts] 
    { 
     // iterate over posts and try to extract the attribute you're after 
     for post in foundPosts 
     { 
      // this won't crash if the value is nil 
      if let foundString = post.objectForKey("keyForStringYouWant") as? String 
      { 
       // found a good data value and was able to cast to string, add it to your array! 
       self.myDataArray.addObject(foundString) 
      } 
     } 
}) 
+0

Это исключает эту ошибку. Я попытался изменить его на [PFObject], но потом я получил больше ошибок ниже. «Использование сообщений необъявленного типа» –

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

  • Нет связанных вопросов^_^