使用swift 1.2和字符串数组

时间:2015-04-23 00:58:52

标签: arrays swift parse-platform pfobject

我正在尝试从parse.com查询,我会db每次接收大约100个对象。我在他们的网站上使用了swift示例代码,并且该应用程序不使用该代码构建。所以我环顾四周,发现人们使用的代码类似于:

 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

我需要从每个对象获取一个值到一个swift字符串数组[String]。我如何得到一个文本值,而不是PFObject,如何将它放入swift字符串数组?

2 个答案:

答案 0 :(得分:1)

我不能很快说话,但代码的问题是它试图将返回的PFObject强制转换为字符串,但是你想提取一个字符串属性,所以(如果你真的想这样做):

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

但请确保您需要这样做。我注意到很多新的解析/快速用户(特别是那些正在填充表格的用户)都希望丢弃返回的PFObject,而只支持其中一个属性。考虑保留PFObject并在以后根据需要提取属性。你可能会发现你也需要其他属性。

答案 1 :(得分:0)

对于初学者,我肯定会建议使用"如果让"模式来限定您的传入数据。这是一个很好的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)
            }
        }
})