【问题标题】:NSObject to Int (Swift)NSObject 到 Int (Swift)
【发布时间】:2014-09-23 05:46:34
【问题描述】:

是否可以将 NSObject 转换为 Int?我该如何实现呢? 我查看了 Apple 参考指南,但我似乎无法理解如何在 NSObject 参考下使用 intValue。

var intValue: Int32 { get }

我从另一个类接收到一个 NSObject,它保存了 HighestScore。我想将此最高分数与当前分数进行比较,如果当前分数大于最高分数,则发送要保存的当前分数。除了我无法将 NSObject(最高分)与我的 Int(当前分数)进行比较之外,我已经拥有了所有这些

这是我检索最高分数的方法:

 func RetriveHighScore() -> NSObject {
    var dataToRetrive = HighScore()
    documentDirectories = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    documentDirectory = documentDirectories.objectAtIndex(0) as String
    path = documentDirectory.stringByAppendingPathComponent("highScore.archive")
    if let dataToRetrive2 = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? HighScore {
        dataToRetrive = dataToRetrive2
    }

    return(dataToRetrive)
}

这是我在另一个类中调用 SaveHighScore 类和 RetrieveHighScore 函数的方式:

var bestScore = SaveHighScore.RetriveHighScore

如何将 Int 值与作为 NSObject 的 bestScore 变量进行比较

感谢您的帮助

【问题讨论】:

  • 目前尚不清楚您实际想要达到的目标。也许如果您通过将 NSObject 转换为 Int 来提供您尝试解决的问题的一些细节,它会更清楚。
  • 我刚刚添加了更多信息,希望你能指导我做什么
  • retrieveHighScore 返回一个NSObject吗?
  • 那为什么你的方法没有返回 NSNumber 呢?
  • 你不应该在这里使用NSObject,你应该使用IntNSNumber。更改您的高分课程以返回合理的类型。你是如何创建档案的?让编译器知道真正的类类型。

标签: swift nsnumber nsobject nsinteger


【解决方案1】:

如果一个对象是一个“真正的”AnyObject,但知道它代表一个表示 Int 数的数字序列,那么下面的代码对我有用(Xcode 版本 6.1 (6A1052c)):

 let oInt = (object as String).toInt() // in my app object has type _TtSQ , 
 var intResult = 0
 if oInt != nil { intResult = oInt! }  // intResult has type _TtSi

我试图让它更简单,但上面的 sn-p 是唯一有效的

【讨论】:

    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2014-07-26
    • 2017-02-17
    相关资源
    最近更新 更多