swift - Insert [AnyObject] into [NSMutableDictionary] -


i trying build app using tableview 2 columns (one displaying strings, other 1 checkbox each string). strings coming [anyobject] variable. have try many things insert result of [anyobject] nsmutabledictionnary (which used nstableview) none of them works. have build dic manually right number of object (related result of [anyobject]) make work dic build automatically.

here exemple of code, working if [anyobject] made 4 elements. tableview column names "jobs" , "unload" :

import cocoa @nsapplicationmain class appdelegate: nsobject, nsapplicationdelegate,nstableviewdatasource,nstableviewdelegate {  @iboutlet weak var window: nswindow! @iboutlet weak var mytableview: nstableview! var dataarray:[nsmutabledictionary] = [["jobs": "", "unload": 0],["jobs": "", "unload": 0],["jobs": "", "unload": 0],["jobs": "", "unload": 0]];  func applicationdidfinishlaunching(anotification: nsnotification) { ... ... ... var ctlelems:[anyobject] = grepout!.componentsseparatedbycharactersinset(nscharacterset.newlinecharacterset()) dataarray = [["jobs": "ctlelems[0]", "unload": 0],["jobs": "ctlelems[1]", "unload": 0],["jobs": "ctlelems[2]", "unload": 0],["jobs": "ctlelems[3]", "unload": 0]]; }     func applicationwillterminate(anotification: nsnotification) {      }     func numberofrowsintableview(atableview: nstableview) -> int     {         return dataarray.count     } func tableview(tableview: nstableview, objectvaluefortablecolumn tablecolumn: nstablecolumn?, row: int) -> anyobject?     {         let object = dataarray[row] nsmutabledictionary         if ((tablecolumn!.identifier) == "unload")         {             println(object)             return object[tablecolumn!.identifier] as? int!         }         else         {              return object[tablecolumn!.identifier] as? string!         }     }      func tableview(tableview: nstableview, setobjectvalue object: anyobject?, fortablecolumn tablecolumn: nstablecolumn?, row: int)     {         dataarray[row].setobject(object!, forkey: (tablecolumn?.identifier)!)     } } 

i following,

var x: int = 0 lines in ctlelems {             dataarray = [["jobs": ctlelems[x], "unload": 0]];             x=x+1         } 

but not working. of time "found nill" error, or last element of [anyobject] displayed. me please?

dataarray = [["jobs": ctlelems[x], "unload": 0]]; 

this means redefining dataarray each iteration. should append dataarray instead.

declare , init dataarray:

var dataarray = [dictionary<string, any>]() 

and append it:

for line in ctlelems {     dataarray.append(["jobs": line, "unload": 0]) } 

or in more swifty way:

dataarray = ctlelems.map { ["jobs": $0, "unload": 0] } 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -