首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Swift 3中使用NSNumber和整数值

在Swift 3中使用NSNumber和整数值
EN

Stack Overflow用户
提问于 2016-09-05 04:55:03
回答 5查看 52.2K关注 0票数 42

我正在尝试将我的项目转换为Swift 3.0,但是在使用NSNumberIntegers时,我收到了两条错误消息。

无法将类型int赋给类型NSNumber

代码语言:javascript
复制
//item is a NSManaged object with a property called index of type NSNumber 

var currentIndex = 0
 for item in self.selectedObject.arrayOfItems {
   item.index = currentIndex
   currentIndex += 1
 }

即使我将currentIndex更改为NSNumber类型,我也会得到以下错误

二元运算符“+=”不能应用于类型“NSNumber”和“Int”

因此,我创建了一个名为oneNSNumber类型的属性来添加到currentIndex中,但随后得到了以下错误;

二元运算符“+=”不能应用于两个NSNumber操作数

我得到的第二个错误是

否'+‘候选项生成预期的上下文结果类型NSNumber

代码语言:javascript
复制
 let num: Int = 210
 let num2: Int = item.points.intValue
 item.points = num + num2

这里我只是尝试在points属性值上加210,item是一个NSManagedObject

因此,基本上我在考虑将数字添加到NSNumber类型的属性时遇到了问题。我之所以使用NSNumber,是因为它们是NSManagedObject的属性。

有人能帮我吗?我有超过80个错误,它们都是上面提到的错误之一。

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-09-05 05:12:50

在Swift 3之前,许多类型在必要的地方自动“桥接”到某个NSObject子类的实例,比如StringNSString,或者IntFloat,...敬NSNumber

从Swift 3开始,您必须明确该转换:

代码语言:javascript
复制
var currentIndex = 0
for item in self.selectedFolder.arrayOfTasks {
   item.index = currentIndex as NSNumber // <--
   currentIndex += 1
}

或者,在创建NSManagedObject子类时使用“将标量属性用于原始数据类型”选项,然后该属性将具有某种整数类型,而不是NSNumber,这样您就可以在不进行转换的情况下获取和设置它。

票数 63
EN

Stack Overflow用户

发布于 2017-10-22 17:53:57

在Swift 4中(在Swift 3中可能也是如此),NSNumber(integer: Int)被替换为NSNumber(value: ),其中value可以是几乎任何类型的数字:

代码语言:javascript
复制
public init(value: Int8)

public init(value: UInt8)

public init(value: Int16)

public init(value: UInt16)

public init(value: Int32)

public init(value: UInt32)


public init(value: Int64)

public init(value: UInt64)

public init(value: Float)

public init(value: Double)

public init(value: Bool)

@available(iOS 2.0, *)
public init(value: Int)

@available(iOS 2.0, *)
public init(value: UInt)
票数 12
EN

Stack Overflow用户

发布于 2017-11-22 19:04:06

Swift 4

代码语言:javascript
复制
var currentIndex:Int = 0
for item in self.selectedFolder.arrayOfTasks {
   item.index = NSNumber(value: currentIndex) // <--
   currentIndex += 1
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39321421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档