标签: nsnull

什么时候我应该在Objective-C中使用nil和NULL?

这是示例代码:

NSDictionary *myDictionary = [NSDictionary dictionary];
NSNumber *myNumber = [myDictionary valueForKey: @"MyNumber"];
NSLog(@"myNumber = %@", myNumber); // output myNumber = (null)

if (myNumber == nil)
    NSLog(@"test 1 myNumber == nil");

if (myNumber == NULL)
    NSLog(@"test 2 myNumber == NULL");

if ([myNumber isEqual:[NSNull null]])
    NSLog(@"test 3 myNumber == [NSNull null]");
Run Code Online (Sandbox Code Playgroud)

我什么时候应该使用nil,NULL和[NSNull null]?

null objective-c nsnull

165
推荐指数
9
解决办法
11万
查看次数

Objective-C中nil,NIL和null之间的差异

我想知道的区别nil,NILnull.我用Google搜索了一下,发现了这个:

nil - >指向Objective-C对象的null指针

NIL - >指向Objective-C类的null指针

null - > null指向原始类型或缺少数据的指针

但我无法清楚地理解术语"Objective-C对象"和"类".

请向我解释一下.此外,有没有像任何文字NSNullNSNil在Objective-C?如果是这样,那么请解释它的用途.

null objective-c nsnull

70
推荐指数
5
解决办法
3万
查看次数

How can I check if an object in an NSArray is NSNull?

I am getting an array with null value. Please check the structure of my array below:

 (
    "< null>"
 )
Run Code Online (Sandbox Code Playgroud)

When I'm trying to access index 0 its crashing because of

-[NSNull isEqualToString:]: unrecognized selector sent to instance 0x389cea70
Run Code Online (Sandbox Code Playgroud)

Currently its crashing because of that array with a crash log:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull isEqualToString:]: unrecognized selector sent to instance 0x389cea70'
*** First throw call stack:
(0x2d9fdf53 0x3820a6af 0x2da018e7 0x2da001d3 0x2d94f598 0x1dee57 0x1dfd31 0x302f598d …
Run Code Online (Sandbox Code Playgroud)

objective-c nsarray ios nsnull

61
推荐指数
5
解决办法
5万
查看次数

如何检测NSString是否为空?

我有一段代码检测如果NSStringNULL,nil等等.然而,它崩溃.这是我的代码:

NSArray *resultstwo = [database executeQuery:@"SELECT * FROM processes WHERE ready='yes' LIMIT 0,1"];
for (NSDictionary *rowtwo in resultstwo) {

NSString *getCaption = [rowtwo valueForKey:@"caption"];

if (getCaption == NULL) {
theCaption = @"Photo uploaded...";
} else if (getCaption == nil) {
theCaption = @"Photo uploaded...";
} else if ([getCaption isEqualToString:@""]) {
theCaption = @"Photo uploaded...";
} else if ([getCaption isEqualToString:@" "]) {
theCaption = @"Photo uploaded...";
}

}
Run Code Online (Sandbox Code Playgroud)

这是错误:

因未捕获的异常而终止应用' NSInvalidArgumentException',原因:' -[NSNull isEqualToString:]:无法识别的选择器发送到实例 …

null objective-c nsnull

54
推荐指数
3
解决办法
8万
查看次数

[NSNull null]和nil有什么区别?

这是我看到的上下文:

NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < kNumberOfPages; i++) {
    [controllers addObject:[NSNull null]];
}
Run Code Online (Sandbox Code Playgroud)

为什么不在那个地方零?

null cocoa cocoa-touch objective-c nsnull

46
推荐指数
4
解决办法
3万
查看次数

检测NSDictionary中的Null值

我有一个NSDictionary来自API服务器的JSON响应.有时候这个字典中的键的值是Null

我试图获取给定的值并将其放入表格单元格的详细文本中以供显示.

问题在于,当我试图将值强制转换NSString为崩溃时,我认为这是因为我试图强制Null转换为字符串.

这样做的正确方法是什么?

我想做的是这样的:

cell.detailTextLabel.text = sensor.objectForKey( "latestValue" ) as NSString
Run Code Online (Sandbox Code Playgroud)

这是一个字典的例子:

Printing description of sensor:
{
    "created_at" = "2012-10-10T22:19:50.501-07:00";
    desc = "<null>";
    id = 2;
    "latest_value" = "<null>";
    name = "AC Vent Temp";
    "sensor_type" = temp;
    slug = "ac-vent-temp";
    "updated_at" = "2013-11-17T15:34:27.495-07:00";
}
Run Code Online (Sandbox Code Playgroud)

如果我只需要在条件中包装所有这些,那很好.我只是无法弄清楚条件是什么.回到Objective-C世界,我会比较,[NSNull null]但这似乎不适用于Swift.

ios nsnull swift

39
推荐指数
5
解决办法
5万
查看次数

NSNull处理NSManagedObject属性值

我正在为我的属性设置值NSManagedObject,这些值NSDictionary来自JSON文件中的正确序列化.我的问题是,当某个值是[NSNull null],我不能直接分配给属性:

    fight.winnerID = [dict objectForKey:@"winner"];
Run Code Online (Sandbox Code Playgroud)

这引发了一个 NSInvalidArgumentException

"winnerID"; desired type = NSString; given type = NSNull; value = <null>;
Run Code Online (Sandbox Code Playgroud)

我可以轻松检查值[NSNull null]并指定nil:

fight.winnerID = [dict objectForKey:@"winner"] == [NSNull null] ? nil : [dict objectForKey:@"winner"];
Run Code Online (Sandbox Code Playgroud)

但我认为这不是很优雅,而且要设置很多属性会变得混乱.

此外,在处理NSNumber属性时,这会变得更难:

fight.round = [NSNumber numberWithUnsignedInteger:[[dict valueForKey:@"round"] unsignedIntegerValue]]
Run Code Online (Sandbox Code Playgroud)

现在NSInvalidArgumentException是:

[NSNull unsignedIntegerValue]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我必须[dict valueForKey:@"round"]在制作NSUInteger它的价值之前进行治疗.一线解决方案消失了.

我尝试创建一个@try @catch块,但只要捕获到第一个值,它就会跳转整个@try块,并忽略下一个属性.

是否有更好的方法来处理[NSNull null]或者使这个完全不同但更容易?

parsing json objective-c nsmanagedobject nsnull

35
推荐指数
2
解决办法
8359
查看次数

是NULL和零等价?

其实我的问题是:是nullnil等价的?

我有一个例子,但是当他们不相同时我很困惑.

NSNull *nullValue = [NSNull null];
NSArray *arrayWithNull = [NSArray arrayWithObject:nullValue];
NSLog(@"arrayWithNull: %@", arrayWithNull);
id aValue = [arrayWithNull objectAtIndex:0];

if (aValue == nil) {
    NSLog(@"equals nil");
} else if (aValue == [NSNull null]) {
    NSLog(@"equals NSNull instance");
    if ([aValue isEqual:nil]) {
        NSLog(@"isEqual:nil");
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,在上述情况下,它表明,无论nullnil不相等并显示"等于NSNull实例"

NSString *str=NULL;
id str1=nil;
if(str1 == str)
{
   printf("\n IS EQUAL........");

}
else
{
    printf("\n NOT EQUAL........");
}
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,它显示两者相等,并显示"IS EQUAL".

任何人的帮助将不胜感激.

谢谢Monish.

null objective-c nsnull

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

如何在objective-c中使用NSNull创建if语句

我正在开发一个iPhone应用程序,我需要使用JSON它从服务器接收数据.在iPhone方面,我将数据转换为NSMutableDictionary.

但是,日期类型数据为空.

我用下面的句子来读日期.

NSString *arriveTime = [taskDic objectForKey:@"arriveTime"];
NSLog(@"%@", arriveTime);

if (arriveTime) {
    job.arriveDone = [NSDate dateWithTimeIntervalSince1970:[arriveTime intValue]/1000];
}
Run Code Online (Sandbox Code Playgroud)

当arrivalTime为null时,如何创建if语句.我试过[到达时间长度]!= 0,但我不工作,因为arriTime是一个NSNull并且没有这个方法.

iphone json nsmutabledictionary nsnull

16
推荐指数
1
解决办法
7517
查看次数

测试与NSNull的相等性

下面是一个代码块,应该测试以查看字典是否为空,如果不是,则拉出正确的对象.但是,出于某种原因,尽管if检查失败,代码仍然执行.是否有一些关于NSNull我不理解的作品的怪癖,或者这是一个苹果虫?

if (svcUser && !(svcUser == (id)[NSNull null])) {
    return [svcUser objectForKey:@"access_level"];
}
Run Code Online (Sandbox Code Playgroud)

控制台响应:

(lldb) print svcUser && !(svcUser == (id)[NSNull null])
(bool) $0 = false
(lldb) continue
-[NSNull objectForKey:]: unrecognized selector sent to instance 0x2b51678
Run Code Online (Sandbox Code Playgroud)

objective-c nsnull

14
推荐指数
4
解决办法
2万
查看次数