问题:按照参考文档操作,两种方式都不能删除Todo对象,但是会打印删除成功的信息。

参考文档:删除对象1

//    删除对象
//    假如某一个 Todo 完成了,用户想要删除这个 Todo 对象,可以如下操作:
    private func mothod1001_deleteObject() {
        let todo = LCObject(className: "Todo", objectId: "155c6aad6f19a27c001aa6b065")
        
        // 调用实例方法删除对象
        _ = todo.delete { result in
            switch result {
            case .success:
                print("Todo Object delete success")
                break // 删除成功
            case .failure(let error):
                print(error)
            }
        }
    }

//    使用 CQL 语法删除对象
//    LeanStorage 提供了类似 SQL 语法中的 Delete 方式删除一个对象,例如删除一个 Todo 对象可以使用下面的代码:
    private func mothod1101_deleteObject() {
        // 执行 CQL 语句实现删除一个 Todo 对象
        _ = LCCQLClient.execute("delete from Todo where objectId='155c6aad6f19a27c001aa6b065'") { result in
            switch result {
            case .success:
                print("Todo Object delete success")
                break // 删除成功
            case .failure(let error):
                print(error)
            }
        }
    }

截图如下:

两种方式都不能删除Todo对象,但是会打印删除成功的信息

你是如何确认「不能删除 Todo 对象」的,在 LeanCloud 网站控制台查看 id 为 155c6aad6f19a27c001aa6b065 的对象仍然存在吗?(刷新了页面没有?)

刷新页面了记录还在,而且可以在页面手工删除数据!

2019-02-21 11:34:12.482873+0800 LeanCloudSwiftDemo[21624:561530] libMobileGestalt MobileGestalt.c:890: MGIsDeviceOneOfType is not supported on this platform.
2019-02-21 11:34:13.002041+0800 LeanCloudSwiftDemo[21624:561530] CredStore - performQuery - Error copying matching creds.  Error=-25300, query={
    class = inet;
    "m_Limit" = "m_LimitAll";
    ptcl = htps;
    "r_Attributes" = 1;
    sdmn = "app-router.leancloud.cn";
    srvr = "app-router.leancloud.cn";
    sync = syna;
}
[💙][Debug][LeanCloud][2019-02-21.11:34:12.890 HTTPClient.swift #372 log(request:)]: 

------ BEGIN LeanCloud HTTP Request
task: 1
curl: curl -v \
	-H "X-LC-Id: VOfCGionrepsdh1dly5lPlfX-9Nh9j0Va" \
	-H "Accept: application/json" \
	-H "X-LC-Sign: ef27ccef9020ea3d0b37e9ee0dd01521,1550720052877" \
	-H "User-Agent: LeanCloud-Swift-SDK/15.0.0" \
	"https://app-router.leancloud.cn/2/route?appId=VOfCGionrepsdh1dly5lPlfX-9Nh9j0Va"
------ END

2019-02-21 11:34:13.120907+0800 LeanCloudSwiftDemo[21624:561530] CredStore - performQuery - Error copying matching creds.  Error=-25300, query={
    class = inet;
    "m_Limit" = "m_LimitAll";
    ptcl = htps;
    "r_Attributes" = 1;
    sdmn = "vofcgion.api.lncldapi.com";
    srvr = "vofcgion.api.lncldapi.com";
    sync = syna;
}
[💙][Debug][LeanCloud][2019-02-21.11:34:13.120 HTTPClient.swift #372 log(request:)]: 

------ BEGIN LeanCloud HTTP Request
task: 1
curl: curl -v \
	-H "X-LC-Id: VOfCGionrepsdh1dly5lPlfX-9Nh9j0Va" \
	-H "Accept: application/json" \
	-H "X-LC-Sign: 2217358da276beb4241d70d13bd06723,1550720053118" \
	-H "User-Agent: LeanCloud-Swift-SDK/15.0.0" \
	"https://vofcgion.api.lncldapi.com/1.1/cloudQuery?cql=delete%20from%20Todo%20where%20objectId%3D%27155c6aad6f19a27c001aa6b065%27"
------ END

[💙][Debug][LeanCloud][2019-02-21.11:34:13.759 HTTPClient.swift #368 log(response:request:)]: 

------ BEGIN LeanCloud HTTP Response
task: 1
code: 200
data: {
    "api_server": "vofcgion.api.lncldapi.com",
    "engine_server": "vofcgion.engine.lncldapi.com",
    "play_server": "vofcgion.play.lncldapi.com",
    "push_server": "vofcgion.push.lncldapi.com",
    "rtm_router_server": "vofcgion.rtm.lncldapi.com",
    "stats_server": "vofcgion.stats.lncldapi.com",
    "ttl": 3600
}
------ END

[💙][Debug][LeanCloud][2019-02-21.11:34:14.123 HTTPClient.swift #368 log(response:request:)]: 

------ BEGIN LeanCloud HTTP Response
task: 1
code: 200
data: {
    "className": "Todo",
    "results": [
        {}
    ]
}
------ END

Todo Object delete success
2019-02-21 11:34:15.717174+0800 LeanCloudSwiftDemo[21624:561630] TIC Read Status [1:0x60000235d200]: 1:57
2019-02-21 11:34:15.717406+0800 LeanCloudSwiftDemo[21624:561630] TIC Read Status [1:0x60000235d200]: 1:57
2019-02-21 11:34:15.717677+0800 LeanCloudSwiftDemo[21624:561630] TIC Read Status [1:0x60000235d200]: 1:57
2019-02-21 11:34:15.723035+0800 LeanCloudSwiftDemo[21624:561630] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x7fe18c402d90] get output frames failed, state 8196
2019-02-21 11:34:15.723339+0800 LeanCloudSwiftDemo[21624:561630] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x7fe18c402d90] get output frames failed, state 8196
2019-02-21 11:34:15.723852+0800 LeanCloudSwiftDemo[21624:561630] TIC Read Status [1:0x0]: 1:57
2019-02-21 11:34:15.723958+0800 LeanCloudSwiftDemo[21624:561630] TIC Read Status [1:0x0]: 1:57
2019-02-21 11:34:15.724212+0800 LeanCloudSwiftDemo[21624:561630] TIC Read Status [1:0x0]: 1:57
2019-02-21 11:34:15.724350+0800 LeanCloudSwiftDemo[21624:561630] TIC Read Status [1:0x0]: 1:57

这条数据到底是否可以删除?
当前行数据视图是锁定图标
下面的write属性又是true
两者看起来矛盾

我这边试了下,

GET https://vofcgion.api.lncld.net/1.1/classes/Todo/155c6aad6f19a27c001aa6b065

返回 {} (空对象),表明 155c6aad6f19a27c001aa6b065 这个 Todo 对象已经删除了。

当前行数据视图是锁定图标
下面的write属性又是true
两者看起来矛盾

那个锁的意思是行数据 视图 是可读的,换句话说无法直接在弹出显示的 json 上修改。
但是实际上这个 UI 元素并不是 editable 的,也没有什么保存/更新按钮,所以这个锁图标并不必要,反而可能导致误解。
感谢提出问题,我们将在控制台中去掉这个图标。