gpt4 book ai didi

objective-c - API 应该为 int 参数返回 NULL 吗? + 如何处理

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:54 24 4
gpt4 key购买 nike

目前我们的 API 为任何没有值的 int 参数返回 NULL

例如在我们的用户 api 中,我们的参数之一如下所示:

{
...
"user_id":NULL
...
}

我知道这不能是 0,因为它可能是一个有效的响应,但是 NULL 指针会导致各种问题,因为 ints 不能是 NULL 指针。

我的想法是这些值应该被完全排除 - 然后它们将返回 nil 值(在 objective-c 中,例如 [dictionary objectForKey:@"user_id"] == nil) 这似乎更合适,并且不检查空指针(这似乎是错误的,int 和指针之间存在差异)。

否则,解决方法是将其变成需要指针的 NSNumber 对象,因此可以为 NULL。然后我可以做类似的事情:

NSNumber *userID = [dictionary objectForKey:@"user_id"];
if(userID != [NSNull null]){
// its not null
}

但对我来说,这从根本上来说是错误的,NSNumber 文档是这样说的:

Note that number objects do not necessarily preserve the type they are created with.

这也让我觉得很脏。

(话又说回来,我正在用字符串初始化 NSDecimalNumber...所以我不知道为什么这会打扰我...)。

最佳答案

如果您的“API”预期返回一个int,那么它不应该返回NULL。正如您已经说过的,您可以使用 NSNumber,在这种情况下您可以返回 NULL。在谈论 int 时,NSNumber 不会丢失数据,只有在无理数等情况下,不同的类型才重要。

所以简而言之,如果你想在某些情况下返回 NULL/nil,你必须使用对象类型,而不是 int。如果您对使用 int 感觉更好,那么唯一的方法是使用特殊的“无效”值,例如 -1-INT_MAX 让用户知道该值无效。或者,如果这是一个选项,您可以抛出异常 - 或者只是添加另一种方法来检查是否可以给出有效响应。

关于objective-c - API 应该为 int 参数返回 NULL 吗? + 如何处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13477176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com