ios - why I have to unwrap value before I use -


a block defined below

 // declare block ( optional )  typealias sorting =   (([schedule], [string]) -> [schedule])?     var sortschedule: sorting   =   { (schedules, sortdescription) in         var array =   [schedule]()         string in sortdescription         {             (index, schedule) in schedules.enumerate()             {                 if string == schedule.starttime                 {                     array.append(schedule)                     break                 }             }         }         return array     } 

at points, invoking block doing

 let allschedules =   sortschedule?(result, sortdescription())  schedule in allschedules // xcode complains @ here  {     ..........  } 

im using ? because want make sure if block exists, something. however, xcode complains for loop

 value of optional type [schedule]? not upwrapped, did mean use '!' or '?'? 

im not sure why because return type of block array can have 0 or more 1 items.

does know why xcode complaining.

you use ? in line let allschedules = sortschedule?(result, sortdescription()) not "for sure if block exists", note, understand can nil. behind scene allschedules have type array<schedule>?. , can not use for in cycle nil. better use optional binding:

if let allschedules = sortschedule?(result, sortdescription()) {     schedule in allschedules     {        //..........     } } 

Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -