我发现在Objective-C中访问可变字典键和值有些困难.
假设我有这个:
NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
Run Code Online (Sandbox Code Playgroud)
我可以设置键和值.现在,我只想访问每个键和值,但我不知道键的数量.
在PHP中它非常简单,如下所示:
foreach ($xyz as $key => $value)
Run Code Online (Sandbox Code Playgroud)
如何在Objective-C中实现?
enumeration objective-c nsdictionary key-value nsmutabledictionary
我知道NSDictionaries你需要一个东西,key以获得一个value.但是我如何迭代所有keys和valuesa NSDictionary,以便我知道有哪些键,以及有什么值?我知道有一种称为for-in-loop的东西JavaScript.有类似的东西Objective-C吗?
我有简单的词典,定义如下:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
Run Code Online (Sandbox Code Playgroud)
但是后来我想在这本字典中添加一些元素 3 : "efg"
但我不知道我怎么能执行这个我在网上搜索过很多的动作但没有什么可以帮助我.
有谁能告诉我如何才能3 : "efg"加入现有的字典?
我是Core Data的新手.我注意到集合类型不可用作属性类型,并且想知道将数组/字典类型数据存储为属性的最有效方法是什么(例如,构成街道,城市等地址的元素确实如此不需要单独的实体,并且比单独的属性/字段更方便地存储为字典/数组.谢谢.
我正在发送NSString和UIImage使用蓝牙.我决定将两者都存储在一个NSDictionary然后将字典转换为NSData.
我的问题是如何转换NSDictionary,NSData反之亦然?
我有一个JSON字符串(来自PHP的json_encode()看起来像这样:
[{"id": "1", "name":"Aaa"}, {"id": "2", "name":"Bbb"}]
Run Code Online (Sandbox Code Playgroud)
我想将其解析为我的iPhone应用程序的某种数据结构.我想对我来说最好的事情就是拥有一个字典数组,所以数组中的第0个元素是一个带键"id" => "1"和字典的字典"name" => "Aaa".
我不明白如何NSJSONSerialization存储数据.到目前为止,这是我的代码:
NSError *e = nil;
NSDictionary *JSON = [NSJSONSerialization
JSONObjectWithData: data
options: NSJSONReadingMutableContainers
error: &e];
Run Code Online (Sandbox Code Playgroud)
这只是我在另一个网站上看到的一个例子.我一直试图JSON通过打印出那些元素和类似的东西来读取对象,但我总是得到EXC_BAD_ACCESS.
我如何使用NSJSONSerialization解析上面的JSON,并将其转换为我提到的数据结构?
在我的iOS 5应用程序中,我有一个NSString包含JSON字符串的应用程序.我想将JSON字符串表示反序列化为本机NSDictionary对象.
"{\"password\" : \"1234\", \"user\" : \"andreas\"}"
Run Code Online (Sandbox Code Playgroud)
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:@"{\"2\":\"3\"}"
options:NSJSONReadingMutableContainers
error:&e];
Run Code Online (Sandbox Code Playgroud)
-[__NSCFConstantString bytes]: unrecognized selector sent to instance 0x1372c
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[__NSCFConstantString bytes]: unrecognized selector sent to instance 0x1372c'
Run Code Online (Sandbox Code Playgroud) 我需要初始化一个常量HashMap,并希望在一行语句中执行它.像这样避免某事:
hashMap.put("One", new Integer(1)); // adding value into HashMap
hashMap.put("Two", new Integer(2));
hashMap.put("Three", new Integer(3));
Run Code Online (Sandbox Code Playgroud)
在目标C中类似于此:
[NSDictionary dictionaryWithObjectsAndKeys:
@"w",[NSNumber numberWithInt:1],
@"K",[NSNumber numberWithInt:2],
@"e",[NSNumber numberWithInt:4],
@"z",[NSNumber numberWithInt:5],
@"l",[NSNumber numberWithInt:6],
nil]
Run Code Online (Sandbox Code Playgroud)
我没有找到任何一个例子来说明如何做这个看了这么多.
我有一系列字典.
我想基于密钥过滤数组.
我试过这个:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == %@)", @"Football"];
NSArray *filteredArray = [data filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
这不起作用,我没有结果.我想我做错了什么.我知道如果"SPORT"是一个ivar,这就是方法.我认为如果它是关键的话可能会有所不同.
然而,我无法找到一个例子.
谢谢
更新
我在我正在搜索的字符串周围添加了引号.
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == '%@')", @"Football"];
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作.
更新2
解决了它.我实际上不得不删除单引号,这似乎与指南所说的相反.
我真正的问题是我有一个嵌套数组,我实际上并没有评估字典.骨头移动.
我只需要问一下如下.假设我有一本字典.
NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
[xyz setValue:@"sagar" forKey:@"s"];
[xyz setValue:@"amit" forKey:@"a"];
[xyz setValue:@"nirav" forKey:@"n"];
[xyz setValue:@"abhishek" forKey:@"a"];
[xyz setValue:@"xrox" forKey:@"x"];
Run Code Online (Sandbox Code Playgroud)
现在,我需要检查如下
[xyz确实包含键"b"值?对还是不对?
问题是如何?
另一个问题是如何计算总键值对?
比如说 NSInteger mCount=[xyz keyCounts];
nsdictionary ×10
objective-c ×7
ios ×6
iphone ×2
json ×2
nsarray ×2
android ×1
cocoa ×1
core-data ×1
enumeration ×1
foreach ×1
hashmap ×1
ios5 ×1
iteration ×1
java ×1
key-value ×1
nspredicate ×1
nsstring ×1
swift ×1