标签: nsnumber

几小时,分钟,秒的NSNumber

我正在努力做一些应该很容易的事情.我的NSNumber值为32025.89秒.我需要以小时,分钟,秒表示.有没有一种吐出来的方法?我似乎找不到合适的格式化程序.

cocoa objective-c nsnumber

6
推荐指数
2
解决办法
1万
查看次数

如何阅读崩溃日志?如何找到应用程序在系统库中崩溃的原因?EXC_CRASH(SIGABRT)是什么意思?

我收到了客户的崩溃日志,以了解我的应用程序崩溃iPhone的原因.

这里来自崩溃日志的一些信息:

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

线程0的堆栈跟踪

Thread 0 Crashed:
0   libSystem.B.dylib              0x3293f98c 0x328c1000 + 518540
1   libSystem.B.dylib              0x3293f97c 0x328c1000 + 518524
2   libSystem.B.dylib              0x3293f96e 0x328c1000 + 518510
3   libSystem.B.dylib              0x3295461a 0x328c1000 + 603674
4   libstdc++.6.dylib              0x30a143b0 0x309cf000 + 283568
5   libobjc.A.dylib                0x3347a858 0x33475000 + 22616
6   libstdc++.6.dylib              0x30a12776 0x309cf000 + 276342
7   libstdc++.6.dylib              0x30a127ca 0x309cf000 + 276426
8   libstdc++.6.dylib              0x30a12896 0x309cf000 + 276630
9   libobjc.A.dylib                0x33479714 0x33475000 + 18196
10  CoreFoundation                 0x335c8210 …

iphone nsnumber crash-log sigabrt

6
推荐指数
1
解决办法
1万
查看次数

NSNumber存储在NSUserDefaults中

刚刚发生了一件奇怪的事.

我在NSUserDefaults中存储了一个带有unsigned long long值的NSNumber.当我检索它时,值只是改变了.似乎系统认为数字很长而不是无符号长.

更糟糕的是,当我将从UserDefaults检索到的数字与原始数字进行比较时,结果是NotEqual!

代码有什么问题?谢谢!

static NSString * const NumberKey = @"MyNumber";
unsigned long long value = 15908045869032883218ULL;
if ([[NSUserDefaults standardUserDefaults] objectForKey:NumberKey] == nil) {

    NSNumber *number = [NSNumber numberWithUnsignedLongLong:value];
    [[NSUserDefaults standardUserDefaults] setObject:number forKey:NumberKey];
    NSLog(@"Original Number:%@", number); // 15908045869032883218, right
}

NSNumber *number = [[NSUserDefaults standardUserDefaults] objectForKey:NumberKey];
NSLog(@"Current Number:%@", number); // -2538698204676668398, weird
NSLog(@"Current Value:%llu", [number unsignedLongLongValue]); // 15908045869032883218, right
NSLog(@"%d", [number isEqualToNumber:[NSNumber numberWithUnsignedLongLong:value]]); // 0
NSLog(@"%d", [number unsignedLongLongValue] == value); // 1
Run Code Online (Sandbox Code Playgroud)

iphone nsuserdefaults nsnumber ios

6
推荐指数
1
解决办法
5845
查看次数

NSNumbers的NSSet - 成员方法总是为零


我想有一个简单的NSSet,它加载了一些NSNumbers,然后找出这些数字是否已经添加到集合中.当我这样做:

NSMutableSet *set = [[NSMutableSet alloc] init];
NSNumber *num1 = [NSNumber numberWithInt:5];
NSNumber *num2 = [NSNumber numberWithInt:5];
[set addObject:num1];
if([set member:num2]){
   // something...
}
Run Code Online (Sandbox Code Playgroud)

问题是成员总是返回nil(如果为false),即使这些数字相同.isEqual方法返回true.所以

if([num1 isEqual:num2]){
   // correct
}
Run Code Online (Sandbox Code Playgroud)

工作...
在文档中我读到成员方法使用isEqual所以我不知道问题是什么...感谢任何建议.

contains objective-c nsnumber nsset

6
推荐指数
2
解决办法
3789
查看次数

如何将NSNumber传递给期望bool的方法?

[[self.view.window subviews] makeObjectsPerformSelector:@selector(setUserInteractionEnabled:) withObject:[NSNumber numberWithBool:NO]];
Run Code Online (Sandbox Code Playgroud)

我在另一个问题的答案中看到了这段代码(如何禁用除最顶层视图之外的所有视图的触摸输入?)并且当它工作时它让我感到惊讶,因为setUserInteractionEnabled:期望一个BOOL(因为它不是一个Objective-c对象不能以performSelector:withObject:类型方法传递).

哪个文档说通过NSNumber是好的?它适用于所有方法,还是需要特殊实现?它是否仅适用于BOOL,还是可以使用类似的类型int

object objective-c nsnumber

6
推荐指数
1
解决办法
440
查看次数

从NSArray中的NSNumber获取Integer值

我有一个NSArray与NSNumber对象具有int值:

arrayOfValues = [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt:1], [NSNumber numberWithInt:3], [NSNumber numberWithInt:5], [NSNumber numberWithInt:6], [NSNumber numberWithInt:7], nil] autorelease];
[arrayOfValues retain];
Run Code Online (Sandbox Code Playgroud)

我试图像这样迭代数组:

int currentValue;
for (int i = 0; i < [arrayOfValues count]; i++)
{
    currentValue = [(NSNumber *)[arrayOfValues objectAtIndex:i] intValue];
    NSLog(@"currentValue: %@", currentValue); // EXE_BAD_ACCESS
}
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

iterator objective-c nsnumber nsarray ios

6
推荐指数
1
解决办法
1万
查看次数

新的NSNumber文字

由于NSNumberObjective-C中有新的文字,您可以使用,例如:

NSNumber *n1 = @1000;  // [NSNumber numberWithInt:1000]
Run Code Online (Sandbox Code Playgroud)

但它似乎不可能与枚举一起使用?我试过了:

typedef enum {

    MyEnumA = 0,
    MyEnumB,
    MyEnumC

} MyEnum;

NSNumber *n2 = @MyEnumA;  // [NSNumber numberWithInt:MyEnumA]
Run Code Online (Sandbox Code Playgroud)

但我得到一个编译器错误说:

程序中意外的'@'

我不明白为什么它不起作用,因为枚举是一个int?有没有办法让这项工作?

cocoa objective-c nsnumber xcode4.5

6
推荐指数
1
解决办法
671
查看次数

在swift 3中与NSNumber的问题

我已将我的项目转换为swift 3,我遇到了NSNumber的问题,我无法处理.这是我的数字格式化声明

let numberFormatter: NumberFormatter = {
    let nf = NumberFormatter()
    nf.numberStyle = .decimal
    nf.minimumFractionDigits = 0
    nf.maximumFractionDigits = 1
    return nf
}()
Run Code Online (Sandbox Code Playgroud)

这里有错误的地方.价值是双倍的,确保其他东西很好.

Label.text = numberFormatter.string(from: NSNumber(value))
Run Code Online (Sandbox Code Playgroud)

来自调试器的消息:

参数标签'(_ :)'与任何可用的重载都不匹配

在转换之前一切正常.请帮忙,我找不到

nsnumber nsnumberformatter ios swift3

6
推荐指数
1
解决办法
3678
查看次数

本地图像作为整数返回 - React Native

我正在尝试在我的本机应用程序中显示本地图像.文档说你这样做的方式是做类似的事情

<Image source={require('./my-icon.png')} />;
Run Code Online (Sandbox Code Playgroud)

这本身就可以工作,但是如果我从中获取数据的api有一个空的url对象,我试图将它作为条件逻辑传递.

<Image source={{uri: article.urlToImage || require("./awaiting.png")}}/>
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到'NSNumber类型的'1'的JSON值无法转换为有效的URL'.

它似乎不喜欢组合

<Image source={{uri: article.urlToImage }}/>
Run Code Online (Sandbox Code Playgroud)

<Image source={require('./awaiting.png')} />
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

谢谢

image nsnumber react-native

6
推荐指数
1
解决办法
366
查看次数

NSNumber可能的内存泄漏

创建一个ARC新项目并在didFinishLaunchingWithOptions中注入此代码.

for (int i=0; i < 1000000; i++) {
    NSNumber* num = [NSNumber numberWithInt:i];
    NSLog(@"%@", num);
}

NSLog(@"over");
Run Code Online (Sandbox Code Playgroud)

应用程序的内存将增加.此外,在for循环结束时,内存不会减少.

但是,如果你替换相同的for循环:

NSNumber* num = [NSNumber numberWithInt:i];
Run Code Online (Sandbox Code Playgroud)

通过

NSNumber* num = [[NSNumber alloc] initWithInt:i];
Run Code Online (Sandbox Code Playgroud)

然后记忆将保持稳定.

这是预期的行为吗?

编辑:

好吧,让我们暂时把didFinishLaunchingWithOptions放在一边.您仍然可以放入viewDidLoad并删除零以便更快地到达for循环结束应用程序的内存将增长到~11 MB.当for循环结束时,内存不会减少.它仍然是~11 MB.

- (void)viewDidLoad {
    [super viewDidLoad];

    for (int i=0; i < 100000; i++) {
        NSNumber* num = [NSNumber numberWithInt:i];
        NSLog(@"%@", num);
    }

    NSLog(@"over");
}
Run Code Online (Sandbox Code Playgroud)

如果你去:

- (void)viewDidLoad {
    [super viewDidLoad];

    @autoreleasepool {
        for (int i=0; i < 100000; i++) {
            NSNumber* num = …
Run Code Online (Sandbox Code Playgroud)

xcode memory-leaks nsnumber

5
推荐指数
1
解决办法
218
查看次数