• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::
             

            Cocoa and Objective-C: Up and Running (by me) is now available from O'Reilly.

            NSArray and KVC

            Even more on simplifying code with generic programming! NSArray's -valueForKey: has a feature that may not be immediately obvious. You can use it to return an array of values buried within a tree of objects. Here's a working example:


            NSMutableArray * tree = [NSMutableArray array];

            NSDictionary   * p = nil;   // parent
            NSDictionary   * c = nil;   // child     
            NSNumber       * n = nil;   // value

            int i;
            for ( i = 0; i < 10; i++ )
            {
              n = [NSNumber numberWithInt: i];

              c = [NSDictionary dictionaryWithObject: n
                                              forKey: @"someKey"];

              p = [NSDictionary dictionaryWithObject: c
                                              forKey: @"storage"];

              [tree addObject: p];
            }


            NSLog (@"%@", tree);


            // here's the important part!

            NSArray * justValues;
            justValues = [tree valueForKeyPath: @"storage.someKey"];


            NSLog (@"%@", justValues);




            The first NSLog spits this out -- just a two-level property list:


            NSLog (@"%@", tree);



            (
                {storage = {someKey = 0; }; }, 
                {storage = {someKey = 1; }; }, 
                {storage = {someKey = 2; }; }, 
                {storage = {someKey = 3; }; }, 
                {storage = {someKey = 4; }; }, 
                {storage = {someKey = 5; }; }, 
                {storage = {someKey = 6; }; }, 
                {storage = {someKey = 7; }; }, 
                {storage = {someKey = 8; }; }, 
                {storage = {someKey = 9; }; }
            )



            The second NSLog spits out an array of values collected by asking each contained object for the value at @"storage.someKey":


            NSArray * justValues;
            justValues = [tree valueForKeyPath: @"storage.someKey"];

            NSLog (@"%@", justValues);



            (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)



            I find this really convenient in Core Data when working with a sorted array of  managed objects -- you can pull out an array of values for just one attribute.
            Design Element
            NSArray and KVC
            Posted Oct 04, 2005 — 4 comments below




             

            Abhi Beckert — Oct 12, 05 431

            *ching*

            Now I finally understand how the binding key for a table column works! Thanks ;)

            Dirk — Mar 09, 06 923

            Unfortunately, I do not. I tried to show the results in "justvalues" in a TableView column using bindings. I use an ArrayController whose content outlet is connected to an instance of the class. The column of the TableView is bound to the ArrayController, controller key is arranged objects, model key path is tree.storage.someKey.
            This does not work unfortunately. If I switch to another application, the TableView will eventually show the (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) - but in just one row! :-( 
            I am looking for an really easy example to this since - well, very long. I've gone through a lot of them on the web - but since I am very new to cocoa, I found them to complicated. Maybe you could give some hints? Thanks in advance and greetings ;-)

            Bagelturf — Mar 24, 07 3807

            Dirk,

            Try my ten-part KVC tutorial at:

            http://www.bagelturf.com/cocoa/kvc1/kvc1.html

            It is *very* simple and includes downloadable projects for each step. I did it to convince myself that I understood KVC.

            (The links to the download page in the text are incorrect. Use the one from the menu on the right.)

            Ben — May 20, 09 6778

            Can i extend this to traverse a sequence of KVC items e.g. first.second.third.fourth

            Also can this mechanism just deal with to-one relationships or is there a way to make it link to an array and then follow into the items returned by the array items.




             

            Comments Temporarily Disabled

            I had to temporarily disable comments due to spam. I'll re-enable them soon.




            Technorati Profile
            Copyright © Scott Stevenson 2004-2008

            http://theocacao.com/document.page/165

            @import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
            posted on 2011-12-02 00:07 逛奔的蝸牛 閱讀(395) 評論(0)  編輯 收藏 引用 所屬分類: Cocoa
            久久伊人亚洲AV无码网站| 久久久久久国产精品免费无码 | 久久丝袜精品中文字幕| 久久久久国产精品麻豆AR影院| 久久天天日天天操综合伊人av| 免费精品国产日韩热久久| 99久久er这里只有精品18| 久久亚洲av无码精品浪潮| 欧美喷潮久久久XXXXx| 欧美激情精品久久久久久久| 久久精品无码专区免费青青| 久久久久国色AV免费看图片| 久久天堂AV综合合色蜜桃网| 久久亚洲精品无码播放| 亚洲国产精品久久久久网站| 狠狠色狠狠色综合久久| 久久99亚洲综合精品首页| 久久se精品一区精品二区| 欧美黑人激情性久久| 国产精品美女久久久网AV| 99久久免费国产精品热| 偷窥少妇久久久久久久久| 久久国产精品视频| 香蕉久久一区二区不卡无毒影院| 无码人妻久久一区二区三区免费| 欧美午夜A∨大片久久| 久久av免费天堂小草播放| 亚洲国产精品久久久久久| 99麻豆久久久国产精品免费| 久久天天躁狠狠躁夜夜网站 | 狠狠人妻久久久久久综合| 韩国免费A级毛片久久| 无码精品久久久久久人妻中字| 欧美精品国产综合久久| 久久大香萑太香蕉av| 久久久久久精品久久久久| 国内精品综合久久久40p| 亚洲AV无码久久精品成人| 亚洲欧美成人综合久久久| 国产精品一区二区久久不卡| 狠狠色婷婷综合天天久久丁香|