不能从swift设置objective-c属性

时间:2015-07-06 15:57:16

标签: objective-c swift

在objective-c代码的头文件中有一个整数属性

@property int xmBufferSize;

我正试图通过

从swift代码设置属性
let sharedExample: AnyObject! = XMPAudioPlayer.instance()

sharedExample.xmBufferSize = 1024

我得到的错误是

无法分配到' xmBufferSize'在' sharedExample'

这一定是非常直接的,为什么我收到此错误?

3 个答案:

答案 0 :(得分:1)

由于AnyObject没有属性xmBufferSize,因此会发生错误。因此,您应首先将shareExample转换为适当的类型。

(例如,(sharedExample as! YourAwesomeClass).xmBufferSize = 1024

如果您想设置没有类型转换的属性,请尝试

sharedExample.setValue(1024, forKey: "xmBufferSize")

这不是类型安全的方式,但有时它方便实用。

答案 1 :(得分:1)

我建议删除AnyObject!注释并让编译器推断出类型是正确的 - XMPAudioPlayer。然后你将拥有正确的类型并像往常一样设置属性。

像这样:

let sharedExample = XMPAudioPlayer.instance()
sharedExample.xmBufferSize = 1024

如果您的instance()方法返回AnyObject,这非常不幸,那么我建议像这样投射:

let sharedExample = XMPAudioPlayer.instance() as! XMPAudioPlayer
sharedExample.xmBufferSize = 1024

答案 2 :(得分:0)

## app.R ## library(shiny) library(shinydashboard) ui <- dashboardPage(dashboardHeader(), dashboardSidebar(), dashboardBody(fluidRow( box( title = "Settings", width = 6, solidHeader = TRUE, status = "primary", flowLayout(selectInput( "Design", "Design:", c("Name 1" = "Name 1", "Name 2" = "Name 2"), selected = "Name 2" )) ), box( title = textOutput("Design"), width = 4, solidHeader = TRUE, status = "primary", "Box content" ) ))) server <- function(input, output) { output$Design <- renderPrint({ paste(input$Design, 'settings') }) } shinyApp(ui, server) 界面中,XMPAudioPlayer方法的返回类型为instance,是否正确?将返回类型更改为id,编译器将正确推断其类型,并将解决错误。