gpt4 book ai didi

ios - 我可以减少重复声明中的代码吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:52 28 4
gpt4 key购买 nike

有没有办法减少 Obj-C 中重复声明的代码?

例如:

我有

    localNotification.fireDate = self.dueDate;
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.alertBody = self.text;
localNotification.soundName = UILocalNotificationDefaultSoundName;

可以简化成这样吗?

 localNotification
.fireDate = self.dueDate;
.timeZone = [NSTimeZone defaultTimeZone];
.alertBody = self.text;
.soundName = UILocalNotificationDefaultSoundName;

谢谢!

最佳答案

您可以使用键值编码。首先将值打包到字典中,以属性名称作为键

NSDictionary *parameters = @{@"fireDate": self.dueDate,
@"timeZone":[NSTimeZone defaultTimeZone],
@"alertBody":self.text,
@"soundName": UILocalNotificationDefaultSoundName }

,您可以轻松地用 block 枚举键和对象。

[parameters enumerateKeysAndObjectsUsingBlock: ^(id key, 
id object,
BOOL *stop)
{
[localNotification setValue:object forKey:key];
}];

如果你会一遍又一遍地使用这段代码,我会在 NSNotification 上创建一个类别,方法是获取字典并终止枚举。

你可以简单地使用

[localNotification setValuesForKeysWithDictionary:parameters];

docs


当然你可以写得更短:

[localNotification setValuesForKeysWithDictionary:@{@"fireDate": self.dueDate,
@"timeZone":[NSTimeZone defaultTimeZone],
@"alertBody":self.text,
@"soundName": UILocalNotificationDefaultSoundName }];

现在它几乎和提议的语法一样紧凑。

关于ios - 我可以减少重复声明中的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645525/

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