我有一个包含单词和数字的字符串.如何从字符串中提取该数字?
NSString *str = @"This is my string. #1234";
Run Code Online (Sandbox Code Playgroud)
我希望能够将1234剥离为int.每次搜索时,字符串都会有不同的数字和单词.
想法?
快速问题 - 是否可以将NSInteger转换为NSNumber对象?我需要将UIImageView对象的标记转换为NSNumber对象,因为我需要将它作为参数传递给函数.
我想获得NSNumber实例的类型.
我在http://www.cocoadev.com/index.pl?NSNumber上发现了这个:
NSNumber *myNum = [[NSNumber alloc] initWithBool:TRUE];
if ([[myNum className] isEqualToString:@"NSCFNumber"]) {
// process NSNumber as integer
} else if ([[myNum className] isEqualToString:@"NSCFBoolean"]) {
// process NSNumber as boolean
}
好的,但这不起作用,编译器无法识别[myNum className].我正在为iPhone编译.
我正在尝试将我的项目转换为Swift 3.0但是在使用NSNumber和时我有两个错误消息Integers.
无法将类型int指定为类型NSNumber
对于
//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
}
Run Code Online (Sandbox Code Playgroud)
甚至当我改变currentIndex一个类型NSNumber然后我得到错误
二进制运算符'+ ='不能应用于'NSNumber'和'Int'类型
所以然后我创建一个名为onetype 的属性NSNumber来添加,currentIndex但后来得到以下错误;
二进制运算符'+ ='不能应用于两个NSNumber操作数
&&我得到的第二个错误是
没有'+'候选者产生预期的上下文结果类型NSNumber
let num: Int = 210
let num2: Int = item.points.intValue
item.points = num + num2
Run Code Online (Sandbox Code Playgroud)
在这里我只想尝试将210添加到points属性值,item是一个NSManagedObject.
所以基本上我遇到了一些问题,我想把数字添加到类型属性中NSNumber.我正在工作,NSNumber …
我使用此代码比较两个NSNumber对象,但它从未传递if条件.
listItems = [appDelegate.productStatus componentsSeparatedByString:@","];
for (int i=0;i<[appDelegate.productArray count]; i++)
{
for (int j=0; j<[listItems count]; j++)
{
number=[NSNumber numberWithInt:[[listItems objectAtIndex:j] intValue]];
NSLog(@"number %@",number);
productObject=[appDelegate.productArray objectAtIndex:i];
NSLog(@"%@,%@",productObject.pid,number);
if (productObject.pid == number)
{
NSLog(@"BUY it!!!");
[purchasArray addObject:productObject];
}
}
}
Run Code Online (Sandbox Code Playgroud)
怎么了?
我在Swift中有一个扩展,它包含了一些属性CGFloat.问题是我不知道如何使用关联对象获取存储的CGFloat值NSNumber
这是我的代码不起作用,但它详细说明了我想做的事情:
var scaledFontSize: CGFloat {
get {
guard let fontSize = objc_getAssociatedObject(self, &AssociatedKeys.scaledFontSize) as? NSNumber else {
//Set it
let scaledFont:CGFloat = VGSizeValues.getValueFromValue(self.font.pointSize);
//Fails here
objc_setAssociatedObject(self,&AssociatedKeys.scaledFontSize, NSNumber( scaledFont),objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
return scaledFont;
}
return CGFloat(fontSize.doubleValue);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题?
我setValue(value, forKey: key)在我的NSKeyValueCoding兼容的Swift NSObject子类中成功使用了该方法.
这在String选项上非常有效,例如
var name:String?
Run Code Online (Sandbox Code Playgroud)
但是,在Int选项上,它会失败,触发我为了调试目的而重写的未定义键方法:
override func setValue(value: AnyObject!, forUndefinedKey key: String!) {
println("\(self) this class is not key value coding-compliant for the key \(key)")
}
Run Code Online (Sandbox Code Playgroud)
因此,例如,myId具有良好整数值的键将触发上面的未定义键方法.
var myId:Int?
Run Code Online (Sandbox Code Playgroud)
如果我将上面的定义更改为非可选,那么一切正常:
var myId:Int = 0
Run Code Online (Sandbox Code Playgroud)
随着myId作为一个可选的,我已经试过绝对一切,我可以在铸造,展开,初始化等方式想到的.它只是没有将类视为符合这些数值的键值.
我知道这是一个很好的数值.将var声明更改为String?崩溃.它在lldb看起来也很好:
Printing description of key:
myId
key NSObject 0x00007fb8d530ca20 0x00007fb8d530ca20
k NSString "myId" 0x00007fa2aa942f20
value __NSCFNumber * Int64(4348129) 0xb000000004258e13
Printing description of value:
4348129
(lldb)
Run Code Online (Sandbox Code Playgroud)
所以,问题是,有没有人在Swift中使用过 - setValue(value, forKey: key) Int类型的NSKeyValueCoding方法成功了吗?
我有一个像大等NSArray包含...NSNumbers3, 4, 20, 10, 1, 100,
如何将所有这些NSNumber的总和(3 + 4 + 20 + 10 + 1 + 100 + etc...)作为一个总和NSInteger?
谢谢!
我有一个unsigned long long值,我想存储到NSString并从字符串中检索.
最初我在NSNumber中有值,我使用它来获取字符串
NSString *numStr = [NSString stringWithFormat:@"%llu", [myNum unsignedLongLongValue]];
Run Code Online (Sandbox Code Playgroud)
其中myNum是NSNumber.
要从NSString返回NSNumber,我必须首先获得unsigned long long值.但是NSString类中没有方法可以做到这一点(我们只有一个用于获取long long值,而不是unsigned long long值).
有人可以告诉我如何将值恢复到NSNumber变量中.
谢谢.
为什么NSNumber不可变?有充分的理由吗?因为现在我正在考虑创建自己的类只是为了可变性.