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