如何使用for循环创建和填充如下所示的结构?目标C.

时间:2013-10-30 11:48:27

标签: objective-c nsarray nsdictionary populate

**有人可以帮我理解这种初始化吗?在我看来,这部分代码:

"username: @"Johny"看起来像nsdictionary initializationa对象的密钥?**

 NSArray *items = @[@{@"username": @"Johny",
                    @"userpic": @"Photo.png",
                     @"image": @"photo1.jpg"},

                   @{@"username": @"George",
                     @"userpic": @"Photo.png",
                     @"image": @"photo2.jpg"},

                   @{@"username": @"Mandy",
                     @"userpic": @"Photo.png",
                     @"image": @"photo3.jpg"},

                   @{@"username": @"Jacob",
                     @"userpic": @"Photo.png",
                     @"image": @"photo4.jpg"},

                   @{@"username": @"Brandon",
                     @"userpic": @"Photo.png",
                     @"image": @"photo5.jpg"},

                   @{@"username": @"Dave",
                     @"userpic": @"Photo.png",
                     @"image": @"photo6.jpg"}
                   ];

* 在我的代码中我通过使用for循环获取所有值 *

for (NSDictionary *dictionary in items) {
{
    //

}

3 个答案:

答案 0 :(得分:2)

这是一个使用new(ish)Objective-C literals syntax的字典对象数组。

除了我们都知道和喜爱的传统文字字符串:@"Hello World",还有:

  • NSArray文字:@[ element1, element2 ],其优点是不需要跟nil一样[NSArray arrayWithObjects:]
  • NSDictionary文字:@{ key : value, key : value },与[NSDictionary dictionaryWithObjects:forKeys:]相比,其优势在于键值顺序更自然。
  • NSNumber文字:@(YES)(布尔值),@(1.2)(浮点),@(123)(整数)。

并且它们都具有更简洁和自然的优点。

答案 1 :(得分:0)

在iOS 6中,Apple创建了一种初始化NSArray的新方法,这就是这里的情况。

它的功能与arrayWithObjects函数类似,只是语法略有不同。

您的NSArray已填充NSDictionary个对象。

答案 2 :(得分:0)

Apple在2012 WWDC上对Objective-C进行了一些更改。如果您还没有看过WWDC 2012视频Modern Objective-C,那么我强烈建议您查看解释所引入更改的视频。其中添加的更改包括Array LiteralsDictionary Literals

基本上就像您可以通过创建以下内容来创建String Literal

NSString *name = @"Slim Shady"

Apple也介绍了Array LiteralsDictionary Literals以下示例来自视频

最初创建数组的选项是:

NSArray *myArray; 
myArray = [NSArray array];  // an empty Array
myArray = [NSArray arrayWithObject:anObject];  // an array with a single object
myArray = [NSArray arrayWithObjects: a, b, n, nil];  // array with 3 objects a, b, c

Array Literals允许您通过以下方式创建数组:

myArray = @[ ];   // an empty Array
myArray = @[anObject];  // array with a single object
myArray = @[a, b, c];  // array with 3 objects a, b, c 

正如您所看到的,使用Literals可以更清晰,更轻松地创建数组。同样适用于NSDictionary 最初创建字典的选项是:

NSDictionary *myDict; 
myDict = [NSDictionary dictionary]; // empty Dcitionary
myDict = [NSDictionary dictionaryWithObject:object forKey:key]; 
myDict = [NSDictionary dictionaryWithObjectsAndKeys: object1, key1, object2, key2, nil];

Dictionary Literals允许您通过以下方式创建字典:

myDict = @{ }; // empty ditionary
myDict = @{ key:object }; // notice the order of the key first -> key : object
myDict = @{ key1:object1 , key2:object2 }; 
相关问题