类型'UnsafeMutableRawPointer'的值没有下标Swift 5

时间:2019-09-02 11:45:13

标签: ios objective-c swift uint8t unsafemutablepointer

我正在尝试将目标C代码转换为Swift。

"A"

当我快速转换它时,它返回“ UnsafeMutableRawPointer”。我需要UInt8。

library(dplyr)

A_df <- df %>% filter(var1 == "A")

df %>%
   filter(var1 != "A") %>%
   group_split(var1) %>%
   purrr::map_df(. %>% bind_rows(A_df) %>% mutate(strat = paste0(first(var1), "A")))


#  var1   var2  var3  var4 strat
#  <fct> <dbl> <int> <int> <chr>
# 1 B      2001     5     5 BA   
# 2 B      2004    10    10 BA   
# 3 B      2007     5     4 BA   
# 4 B      2009     9     6 BA   
# 5 A      2000     5     9 BA   
# 6 A      2003     6     2 BA   
# 7 A      2006     9     1 BA   
# 8 C      2002    10     5 CA   
# 9 C      2005     7     9 CA   
#10 C      2008     5     3 CA   
#11 A      2000     5     9 CA   
#12 A      2003     6     2 CA   
#13 A      2006     9     1 CA   

我尝试了不同的解决方案,但没有为我工作。谁能告诉我如何解决这个问题。谢谢

  

“ UnsafeMutableRawPointer”类型的值没有下标

enter image description here

快捷代码。

UInt8* data = calloc(bytesPerRow, height);

目标C代码。

let data = calloc(bytesPerRow, height)! // UnsafeMutableRawPointer

1 个答案:

答案 0 :(得分:3)

您需要为可变指针分配类型。在当前状态下,它是指向任何内容的可变指针,但您希望它成为指向UInt8值的缓冲区的可变指针。

要这样做,只需在数据上调用assumingMemoryBound

let data = calloc(bytesPerRow, height)!.assumingMemoryBound(to: UInt8.self)