如果数组缺少对象,如何添加字符串进行解析?

时间:2015-11-26 00:46:46

标签: ios swift parse-platform

我有两个阵列,歌曲(ret)和艺术家(ter)。我正在从解析中检索该信息,但是当每个数组中的计数彼此不匹配时,应用程序崩溃。我想避免这种情况而不是应用程序崩溃,我想要字符串"抱歉没有艺术家可用"被添加到缺少艺术家的那一行。我该怎么做?

以下是数据库正常运行时的外观。 enter image description here

下面是崩溃时的数据库。这是我想要添加"抱歉没有艺术家可用"

enter image description here

以下是检索数据的代码。

 func getSongs(){
    let retrieve = PFQuery(className: "Pointer")
    retrieve.orderByDescending("createdAt")
    retrieve.findObjectsInBackgroundWithBlock({
        (objects: [AnyObject]?, error: NSError?) -> Void in
        var object = objects as! [PFObject]
        if(error == nil){

            self.ret = []
            self.ter = []

            for i in 0...object.count-1{


                if (object[i].valueForKey("user")!.objectId == currentUserID){

                    self.ret.append(object[i].valueForKey("title") as! String)
                    self.ter.append(object[i].valueForKey("artist") as! String)
                    print(self.ret)
                    print(self.ter)


                }
            }
        }

    })

}

1 个答案:

答案 0 :(得分:0)

这是因为valueForKey(" artist")可能为零,你不能将nil放入数组中。

我建议你使用一个结构来保存歌曲数据,因为有两个独立的数组会导致问题,如果它们不同步(真的很烦人的错误)

创建一个像这样的结构:

struct Song {
        let title: String
        let artist: String

        init(titleString: String?, artistString: String?) {
            if let titleStringUnwrapped = titleString {
                title = titleStringUnwrapped
            } else {
                title = "Title not found"
            }

            if let artistStringUnwrapped = artistString {
                artist = artistStringUnwrapped
            } else {
                artist = "Artist not found"
            }
        }
    }

然后你只需创建一个[Song]类型的数组,并将你的新歌曲结构添加到其中:

if (object[i].valueForKey("user")!.objectId == currentUserID){
  let newSong = Song(
    titleString: object[i].valueForKey("title") as? String,
    artistString: object[i].valueForKey("artist") as? String
  )
}