我正在尝试将UInt8数组转换为字符串,但返回的结果为零。
func send(data: [UInt8]?) {
if(data == nil || data?.count == 0) { return }
let dataString = String(data: Data(bytes: data!, count: data!.count), encoding : String.Encoding.utf8)
print("DataString: \(dataString ?? "J[]")")
if(self.webSocket != nil) {
self.webSocket!.send(text: dataString ?? "J[]" )
}
}
调用此函数时,其输入为
Optional<Array<UInt8>>
▿ some : 471 elements
- 0 : 68
- 1 : 31
- 2 : 139
- 3 : 8
- 4 : 0
- 5 : 0
- 6 : 0
- 7 : 0
- 8 : 0
- 9 : 0
- 10 : 19
- 11 : 117
- 12 : 148
- 13 : 201
- 14 : 82
- 15 : 228
- 16 : 48
- 17 : 12
- 18 : 134
- 19 : 223
- 20 : 197
- 21 : 103
- 22 : 29
- 23 : 108
- 24 : 45
- 25 : 142
- 26 : 211
- 27 : 199
- 28 : 169
- 29 : 225
- 30 : 1
- 31 : 88
- 32 : 102
- 33 : 46
- 34 : 20
- 35 : 135
- 36 : 0
- 37 : 125
- 38 : 27
- 39 : 104
- 40 : 10
- 41 : 194
- 42 : 129
- 43 : 162
- 44 : 120
- 45 : 119
- 46 : 36
- 47 : 47
- 48 : 77
- 49 : 22
- 50 : 79
- 51 : 37
- 52 : 94
- 53 : 218
- 54 : 95
- 55 : 44
- 56 : 75
- 57 : 191
- 58 : 228
- 59 : 190
- 60 : 253
- 61 : 116
- 62 : 243
- 63 : 155
- 64 : 59
- 65 : 4
- 66 : 225
- 67 : 68
- 68 : 126
- 69 : 148
- 70 : 72
- 71 : 41
- 72 : 50
- 73 : 184
- 74 : 199
- 75 : 105
- 76 : 158
- 77 : 220
- 78 : 225
- 79 : 211
- 80 : 221
- 81 : 127
- 82 : 204
- 83 : 71
- 84 : 165
- 85 : 183
- 86 : 40
- 87 : 2
- 88 : 24
- 89 : 34
- 90 : 228
- 91 : 17
- 92 : 5
- 93 : 136
- 94 : 64
- 95 : 16
- 96 : 226
- 97 : 8
- 98 : 1
- 99 : 61
- 100 : 4
- 101 : 47
- 102 : 218
- 103 : 16
- 104 : 188
- 105 : 62
- 106 : 195
- 107 : 96
- 108 : 175
- 109 : 7
- 110 : 46
- 111 : 63
- 112 : 61
- 113 : 36
- 114 : 109
- 115 : 33
- 116 : 128
- 117 : 62
- 118 : 162
- 119 : 179
- 120 : 182
- 121 : 26
- 122 : 235
- 123 : 24
- 124 : 56
- 125 : 26
- 126 : 138
- 127 : 11
- 128 : 52
- 129 : 54
- 130 : 164
- 131 : 7
- 132 : 40
- 133 : 178
- 134 : 253
- 135 : 212
- 136 : 150
- 137 : 106
- 138 : 179
- 139 : 30
- 140 : 109
- 141 : 143
- 142 : 44
- 143 : 64
- 144 : 30
- 145 : 163
- 146 : 237
- 147 : 193
- 148 : 161
- 149 : 135
- 150 : 6
- 151 : 155
- 152 : 179
- 153 : 223
- 154 : 152
- 155 : 195
- 156 : 58
- 157 : 227
- 158 : 113
- 159 : 225
- 160 : 194
- 161 : 112
- 162 : 222
- 163 : 147
- 164 : 20
- 165 : 137
- 166 : 95
- 167 : 32
- 168 : 244
- 169 : 141
- 170 : 37
- 171 : 85
- 172 : 3
- 173 : 194
- 174 : 216
- 175 : 119
- 176 : 143
- 177 : 36
- 178 : 171
- 179 : 162
- 180 : 58
- 181 : 108
- 182 : 220
- 183 : 64
- 184 : 175
- 185 : 1
- 186 : 83
- 187 : 4
- 188 : 26
- 189 : 118
- 190 : 144
- 191 : 33
- 192 : 22
- 193 : 89
- 194 : 36
- 195 : 171
- 196 : 26
- 197 : 117
- 198 : 8
- 199 : 88
- 200 : 154
- 201 : 87
- 202 : 63
- 203 : 124
- 204 : 54
- 205 : 175
- 206 : 70
- 207 : 147
- 208 : 13
- 209 : 172
- 210 : 64
- 211 : 213
- 212 : 9
- 213 : 62
- 214 : 3
- 215 : 66
- 216 : 144
- 217 : 102
- 218 : 44
- 219 : 7
- 220 : 128
- 221 : 155
- 222 : 99
- 223 : 23
- 224 : 11
- 225 : 26
- 226 : 169
- 227 : 70
- 228 : 164
- 229 : 186
- 230 : 115
- 231 : 202
- 232 : 125
- 233 : 209
- 234 : 219
- 235 : 150
- 236 : 82
- 237 : 102
- 238 : 17
- 239 : 36
- 240 : 213
- 241 : 143
- 242 : 116
- 243 : 98
- 244 : 235
- 245 : 163
- 246 : 217
- 247 : 95
- 248 : 33
- 249 : 201
- 250 : 8
- 251 : 219
- 252 : 102
- 253 : 82
- 254 : 79
- 255 : 200
- 256 : 50
- 257 : 198
- 258 : 59
- 259 : 225
- 260 : 209
- 261 : 142
- 262 : 46
- 263 : 112
- 264 : 159
- 265 : 21
- 266 : 204
- 267 : 177
- 268 : 152
- 269 : 26
- 270 : 220
- 271 : 79
- 272 : 139
- 273 : 161
- 274 : 181
- 275 : 194
- 276 : 1
- 277 : 34
- 278 : 215
- 279 : 202
- 280 : 225
- 281 : 85
- 282 : 174
- 283 : 216
- 284 : 252
- 285 : 23
- 286 : 95
- 287 : 29
- 288 : 54
- 289 : 74
- 290 : 251
- 291 : 180
- 292 : 233
- 293 : 129
- 294 : 41
- 295 : 51
- 296 : 238
- 297 : 177
- 298 : 44
- 299 : 51
- 300 : 75
- 301 : 118
- 302 : 224
- 303 : 199
- 304 : 172
- 305 : 214
- 306 : 83
- 307 : 54
- 308 : 85
- 309 : 74
- 310 : 213
- 311 : 244
- 312 : 222
- 313 : 196
- 314 : 16
- 315 : 48
- 316 : 101
- 317 : 136
- 318 : 157
- 319 : 248
- 320 : 44
- 321 : 2
- 322 : 99
- 323 : 212
- 324 : 221
- 325 : 168
- 326 : 142
- 327 : 24
- 328 : 228
- 329 : 46
- 330 : 180
- 331 : 242
- 332 : 87
- 333 : 56
- 334 : 108
- 335 : 148
- 336 : 17
- 337 : 104
- 338 : 247
- 339 : 102
- 340 : 91
- 341 : 122
- 342 : 132
- 343 : 103
- 344 : 20
- 345 : 124
- 346 : 207
- 347 : 151
- 348 : 88
- 349 : 33
- 350 : 242
- 351 : 57
- 352 : 192
- 353 : 96
- 354 : 25
- 355 : 104
- 356 : 184
- 357 : 132
- 358 : 97
- 359 : 10
- 360 : 252
- 361 : 136
- 362 : 195
- 363 : 160
- 364 : 121
- 365 : 211
- 366 : 151
- 367 : 83
- 368 : 51
- 369 : 205
- 370 : 241
- 371 : 191
- 372 : 56
- 373 : 174
- 374 : 175
- 375 : 15
- 376 : 215
- 377 : 146
- 378 : 178
- 379 : 62
- 380 : 149
- 381 : 227
- 382 : 161
- 383 : 123
- 384 : 91
- 385 : 98
- 386 : 49
- 387 : 184
- 388 : 190
- 389 : 14
- 390 : 82
- 391 : 9
- 392 : 237
- 393 : 8
- 394 : 233
- 395 : 181
- 396 : 195
- 397 : 124
- 398 : 215
- 399 : 145
- 400 : 250
- 401 : 117
- 402 : 19
- 403 : 169
- 404 : 36
- 405 : 241
- 406 : 14
- 407 : 220
- 408 : 243
- 409 : 244
- 410 : 116
- 411 : 116
- 412 : 7
- 413 : 247
- 414 : 247
- 415 : 52
- 416 : 31
- 417 : 95
- 418 : 29
- 419 : 184
- 420 : 183
- 421 : 121
- 422 : 122
- 423 : 157
- 424 : 127
- 425 : 233
- 426 : 191
- 427 : 154
- 428 : 59
- 429 : 248
- 430 : 175
- 431 : 51
- 432 : 125
- 433 : 127
- 434 : 249
- 435 : 119
- 436 : 154
- 437 : 30
- 438 : 127
- 439 : 159
- 440 : 30
- 441 : 222
- 442 : 159
- 443 : 142
- 444 : 207
- 445 : 179
- 446 : 126
- 447 : 54
- 448 : 127
- 449 : 188
- 450 : 216
- 451 : 250
- 452 : 213
- 453 : 197
- 454 : 229
- 455 : 159
- 456 : 139
- 457 : 235
- 458 : 27
- 459 : 247
- 460 : 117
- 461 : 247
- 462 : 13
- 463 : 251
- 464 : 171
- 465 : 44
- 466 : 100
- 467 : 39
- 468 : 5
- 469 : 0
- 470 : 0
当此数据转换为字符串时,我得到dataString
为nil
。当我尝试调试时,发现了此日志
表达式产生错误:错误:执行被中断,原因: EXC_BAD_ACCESS(代码= 2,地址= 0x16f174000)。该过程已经 返回到表达式评估之前的状态。
我的代码之前多次使用此方法,并且运行良好。
答案 0 :(得分:1)
失败的原因很可能是数组中的\0
个字节,并且数据似乎不是UTF8字符串。
这是一种更简单的语法。参数data
是非可选的,因为调用此方法时,您想要发送数据。
if(self.webSocket != nil) { self.webSocket!...
很漂亮 objective-c-ish 。在Swift中有Optional chanining
func send(data: [UInt8]) {
guard !data.isEmpty, let dataString = String(data: Data(data), encoding: .utf8) else { return }
print("DataString:", dataString)
self.webSocket?.send(text: dataString)
}