无法设置可选值,显示为nil [英] Cannot set optional value, prints nil

查看:117
本文介绍了无法设置可选值,显示为nil的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究写到Google表格的项目.我正在尝试取消合并单元格.此功能有效,但是会取消合并工作表中的所有内容.这是因为它没有设置.range值.当我打印(如下所示)测试"值时,所有范围值都将相应显示,但是当我打印"request.unmergeCells?.range"时,它显示为nil.当我在其他地方使用此确切的代码执行合并命令时,我进一步感到困惑,它可以很好地加载值(请参阅第二段代码.)

I am working on project that writes to google sheets. I am trying to Unmerge cells. This function works however it unmerges everything in the sheet. This is because it is not setting the .range value. When I print (as seen below) the "test" value all range values are shown accordingly however when I print the "request.unmergeCells?.range" it says nil. I am further confused as I use this exact code elsewhere for a merge command and it loads the values fine (see second snippet of code.)

我已经尝试了好几天才能解决此问题,但无济于事.有什么想法吗?

I have tried for days to resolve this issue with no avail. Any thoughts?

func unmergecell1() {

            let request = GTLRSheets_Request.init()

            let test = GTLRSheets_GridRange.init()

            rowstart = 4
            rowend = 100
            columnstart = 0
            columnend = 100

            test.startRowIndex = rowstart
            test.endRowIndex = rowend
            test.startColumnIndex = columnstart
            test.endColumnIndex = columnend

            request.unmergeCells?.range = test

            request.unmergeCells = GTLRSheets_UnmergeCellsRequest.init()

            print("=========unmerge==============")
            print(test)
            print(request.unmergeCells?.range)

            let batchUpdate = GTLRSheets_BatchUpdateSpreadsheetRequest.init()

            batchUpdate.requests = [request]


            let createQuery = GTLRSheetsQuery_SpreadsheetsBatchUpdate.query(withObject: batchUpdate, spreadsheetId: spreadsheetId)


        service.executeQuery(createQuery) { (ticket, result, NSError) in

               }
              }

func mergecell() {

        let request = GTLRSheets_Request.init()

        request.mergeCells = GTLRSheets_MergeCellsRequest.init()

        let test = GTLRSheets_GridRange.init()

        test.startRowIndex = rowstart
        test.endRowIndex = rowend
        test.startColumnIndex = columnstart
        test.endColumnIndex = columnend
        request.mergeCells?.range = test

        request.mergeCells?.mergeType = kGTLRSheets_MergeCellsRequest_MergeType_MergeRows

        let batchUpdate = GTLRSheets_BatchUpdateSpreadsheetRequest.init()
        batchUpdate.requests = [request]

        let createQuery = GTLRSheetsQuery_SpreadsheetsBatchUpdate.query(withObject: batchUpdate, spreadsheetId: spreadsheetId)

        service.executeQuery(createQuery) { (ticket, result, NSError) in

        }
       }

推荐答案

我认为您需要切换这两行:

I think you need to switch these 2 lines:

request.unmergeCells?.range = test

request.unmergeCells = GTLRSheets_UnmergeCellsRequest.init()

第二行初始化取消合并请求,只有在初始化后才能向其添加范围.因此,通过如下相反的方法,它应该可以工作.

The 2nd line initates the unmerge request, and only after you initate it can you add the range to it. So by making it the other way round, as below, it should work.

request.unmergeCells = GTLRSheets_UnmergeCellsRequest.init()
request.unmergeCells?.range = test

这篇关于无法设置可选值,显示为nil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆