gpt4 book ai didi

objective-c - NSUUID 小写字符

转载 作者:行者123 更新时间:2023-12-03 16:25:08 25 4
gpt4 key购买 nike

我在我的应用程序中使用 NSUUID 作为唯一 ID,如下所示:

[[NSUUID UUID] UUIDString]

正如预期的结果一样,我得到一个像这样的ID:102A21AD-7216-4517-8A79-39776B767E72

出于后端原因,我需要 uuid 中的字母为小写。我尝试打电话

[[NSUUID UUID] UUIDString].lowercaseString 

但返回的字符串为空。

我真的必须迭代字符串中的所有字符并将适当的字符转换为小写吗?如果是这样,有人对最有效的方法有什么建议吗?

编辑:

我试图实现这一点的方法是通过子类化 NSUUID,然后覆盖

-(NSString*) UUIDString; 

方法。

我的实现是

-(NSString*) UUIDString{
return [super UUIDString].lowercaseString;
}

接受的答案解释了为什么这不起作用。

最佳答案

根据您对问题的编辑,需要进行一些调查......

看起来NSUUID的行为就像一个类簇,如果不实现它的关键方法并自己提供UUID生成的功能,你就无法对其进行子类化。如果您对其进行子类化,您将获得一个 UUIDString 为空字符串的父类。虽然类的标准 init 会返回一个 __NSConcreteUUID 实例,但其 UUIDString 更有用!

如果上述内容令人困惑,以下部分实现显示了一种实现此目的的方法:

@interface LowerUUID : NSUUID
@end

@implementation LowerUUID
{
NSUUID *real;
}

- (id) init
{
self = [super init];
if (self)
real = NSUUID.new;
return self;
}

- (NSString *) UUIDString
{
NSString *original = [real UUIDString];
NSString *lower = original.lowercaseString;
return lower;
}

@end

为了完整,您还需要提供其他方法的实现。

对于这个特定的类,您不太可能会发现这是值得的,但对于像 NSMutableArray 这样的类集群,它确实有意义。

您可以向 Apple 提交错误报告,说明文档并未说明您不能简单地对 NSUUID 进行子类化。

关于objective-c - NSUUID 小写字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21385950/

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