在数组中存储AnyObject?

时间:2016-07-09 23:29:20

标签: ios arrays swift

我有一个数组,我正在尝试将时间戳存储到。

我正在测试类似的东西:

    @IBAction func buttonPressed(sender:UIButton!) {

    let post = ["MinutesLeft" : (FIRServerValue.timestamp())]
    DataService.ds.REF_POSTS.childByAutoId().setValue(post)

}

然后我试图回调它并用一些时间戳填充数组:

  DataService.ds.REF_POSTS.queryOrderedByChild("MinutesLeft").queryStartingAtValue(Int(cutoff)).observeEventType(.ChildAdded, withBlock: { (snapshot:FIRDataSnapshot) in

     let post = snapshot.value!["MinutesLeft"]

        print("POST \(post)" )

        self.postsArray.append(post)
            print(self.postsArray)
        } else {
            print("Didn't work")
        }

    })

然后我正在运行一个计时器,用于清除某些帖子:

func removeExpiredItems() {
    let cutoff = UInt64(1000 * floor(NSDate().timeIntervalSince1970) - 10*60*1000)

    while (self.postsArray.count > 0 && self.postsArray[0] < cutoff) {
        // remove first item, because it expired
        self.postsArray.removeAtIndex(0)
        print(postsArray.count)
    }

}

我的问题是:

我不知道这里有什么样的数组。它告诉我时间戳是一个AnyObject,但当我去制作任何对象的数组时,我得到一个直接的Xcode内部错误崩溃...所以我猜这是不行的。

我可以将它全部翻译成字符串并将其存储起来,但是当我尝试在removeExpiredItems函数中比较时间与我的截止时,问题就出现了。

我试图做类似的事情:

获取时间戳,将它们更改为字符串,然后在我要进行比较时将字符串更改为Int,但我会得到类似“此类转换将始终失败”的内容。

这里有什么想法吗?

1 个答案:

答案 0 :(得分:1)

let post = snapshot.value!["MinutesLeft"]

在这种情况下,post的类型将为AnyObject, (Optional<AnyObject>)

您已将其存储为所需的数据类型。例如,在这种情况下,您可以将其存储为NSTimeInterval

 let post = snapshot.value!["MinutesLeft"] as! NSTimeInterval

并将其存储在NSTimeInterval

的数组中
var postsArray :[NSTimeInterval] =  []