iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 初始化NSDictionary大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

以下是我的.h文件: NSDictionary *originalValues; @property (nonatomic, retain) NSDictionary *originalValues; 这是启动NSDictionary的.m文件. @synthesize originalValues; - (void)viewDidLoad { // copy original val
以下是我的.h文件

NSDictionary *originalValues;
    @property (nonatomic,retain) NSDictionary *originalValues;

这是启动NSDictionary的.m文件.

@synthesize originalValues;

- (void)viewDidLoad {

// copy original values when view loaded
originalValues = [[NSDictionary alloc] initWithObjectsAndKeys:place.city,@"city",place.cuisine,@"cuisine",place.latitude,@"latitude",place.longitude,@"longitude",place.name,@"name",place.rating,@"rating",place.state,@"state",place.street,@"street",place.telephone,@"telephone",place.timesVisited,@"times visited",place.uppercaseFirstLetterOfName,@"first letter",place.website,@"website",place.zipcode,@"zipcode",nil];
}

问题只是前四个对象和密钥被添加.之后,它们没有被添加到以place.name,@“name”开头的字典中.我在整个字典中做了一个NSLog,唯一输出的东西是前面提到的四个值,所以我做了一个NSLog的place.name,它正在输出一个值,所以我知道还应该输出这个键/值对.有没有我在这里失踪的东西?我很好奇为什么所有的值都没有被初始添加到NSDictionary中?

解决方法

它们不被添加的原因是因一个对象是nil,它标记了字典的结尾.您需要确保每个对象不是零,如果可以使用[NSNull null]代替它.还可以使用self.originalValues = …进行正确的内存管理.只需确保使用字典检查/可以处理NSNull值.

使用gnu三进制扩展的示例:

self.originalValues = [[NSDictionary alloc] initWithObjectsAndKeys:
                         place.city ?: [NSNull null],place.cuisine ?: [NSNull null],place.latitude ?: [NSNull null],place.longitude ?: [NSNull null],place.name ?: [NSNull null],place.rating ?: [NSNull null],place.state ?: [NSNull null],place.street ?: [NSNull null],place.telephone ?: [NSNull null],place.timesVisited ?: [NSNull null],place.uppercaseFirstLetterOfName ?: [NSNull null],place.website ?: [NSNull null],place.zipcode ?: [NSNull null],nil];

大佬总结

以上是大佬教程为你收集整理的objective-c – 初始化NSDictionary全部内容,希望文章能够帮你解决objective-c – 初始化NSDictionary所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。