         
         for _ in 0..<max(n,1) {
             
-            var o : AnyObject?
+            var o : UnpackedType?
             
             switch(c) {
                 
             case "c":
-                o = NSString(bytes: [bytes[loc]], length: 1, encoding: NSUTF8StringEncoding); loc += 1
+                let optionalString = NSString(bytes: [bytes[loc]], length: 1, encoding: NSUTF8StringEncoding)
+                loc += 1
+                guard let s = optionalString else { assertionFailure(); return [] }
+                o = s
             case "b":
                 let r = readIntegerType(Int8.self, bytes:bytes, loc:&loc)
                 o = Int(r)

    
    assertThatFormatHasTheSameSizeAsData(format, data:data)
    
    var a : [AnyObject] = []
    
    var loc = 0
    

        for _ in 0..<max(n,1) {
            
            var bytes : [UInt8] = []
            
            if c != "x" {
                o = objectsQueue.removeFirst()
            }
