Objective-C:向类别添加属性

2023-12-22

我已经为 NSDate 构建了一个类别,我想在这个类别中封装一个属性来保存一些数据。但我无法实现添加此属性,只能添加方法。

有什么办法可以实现这一点吗?

谢谢。


这里有一些代码:

文件名:NSObject+dictionary.h

#import <Foundation/Foundation.h>
#import <objc/runtime.h>
@interface NSObject (dictionary)
- (NSMutableDictionary*) getDictionary;
@end

文件名:NSObject+dictionary.m

#import "NSObject+dictionary.h"
@implementation NSObject (dictionary)
- (NSMutableDictionary*) getDictionary
{
  if (objc_getAssociatedObject(self, @"dictionary")==nil) 
  {
    objc_setAssociatedObject(self,@"dictionary",[[NSMutableDictionary alloc] init],OBJC_ASSOCIATION_RETAIN);
  }
  return (NSMutableDictionary *)objc_getAssociatedObject(self, @"dictionary");
}

现在(每个类的)每个实例都有一个字典,您可以在其中存储自定义属性。 和键值编码 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/KeyValueCoding.html你可以设置这样的值:

[myObject setValue:attributeValue forKeyPath:@"dictionary.attributeName"]

你可以得到这样的值:

[myObject valueForKeyPath:@"dictionary.attributeName"]

这甚至可以与 Interface Builder 和用户定义的运行时属性配合使用。

Key Path                   Type                     Value
dictionary.attributeName   String(or other Type)    attributeValue
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C:向类别添加属性 的相关文章

  • Clang 中所有 Objective-C 预处理器指令的列表

    Clang 中是否有所有 Objective C 预处理器指令的列表 我说的是 pragma mark Section I or pragma unused variableName or warning message 我想了解更多信息以
  • NSDateComponents 工作日没有显示正确的工作日?

    我得到了一个 NSDate 例如 1 6 12 星期五 并试图找出它是星期几 我的一周从星期一开始 所以星期五应该是工作日 5 NSCalendar calendar NSCalendar alloc initWithCalendarIde
  • NSUserDefaults 无法保存 NSMutableDictionary

    我尝试使用以下代码将 NSMutableDictionary 保存到 NSUserDefaults NSUserDefaults def NSUserDefaults standardUserDefaults NSMutableDictio
  • 初始化单例的不同方式

    在 C 和 Java 中 我基本上看到了每个人初始化单例的一种方法 static obj inst null obj getInstance if inst null inst new obj return inst 现在 当我转向 iPh
  • TextField 中的 NSAttributedString 在单击时更改/重置

    我正在跟进THIS https developer apple com library mac qa qa1487 index html来自苹果的指南 但它并没有真正正常工作 基本上 我试图通过自定义 WindowController 类向
  • 基于标签删除 UIView 子视图?

    我正在创建一个这样的视图 UILabel qty UILabel alloc initWithFrame CGRectMake 0 0 100 20 qty backgroundColor UIColor whiteColor qty te
  • ios 无法将图片上传到服务器

    您好 我正在尝试将图像从我的 IOS 设备上传到服务器 这是我上传图像的代码 IBAction btnUpload id sender if self imageViewGallery image nil UIAlertView Error
  • 在 iPhone 的日期选择器中插入空白值

    我有一个日期选择器 使用操作表显示 我想在日期选择器中插入一个空白值并将其设置为默认值 它应该仅根据用户选择而改变 这可能吗 如果是的话怎么办 感谢所有宝贵的建议 UIDatePicker 仅支持某些模式 并且不允许这种自定义 将空白或自定
  • 拖动调整 NSView(或其他对象)的大小

    我正在尝试构建一个应用程序 允许用户使用可以调整大小的矩形边界框来指定图像的多个区域 到目前为止 我已经有一个NSScrollView其中包含一个NSImageView这样用户就可以放大图像并根据需要滚动 我目前的想法是我可以使用NSVie
  • MFMailComposeViewController 立即关闭

    情况是 MFMailComposeViewController 将被呈现 我看到它已经完成了一半 但后来就被驳回了 这是错误 serviceViewControllerReady 错误 错误域 UIViewServiceInterfaceE
  • 如何在 iPhone 中使用彩信发送音频?

    我瞪大了眼睛MMS在 iPhone 中 但我没有找到太多这方面的信息 大多数发现都与图像有关 我想使用发送音频MMS in iPhone using ios sdk 可以这样做吗 我有以下疑问MMS 如何识别所有MMS音频文件在iPhone
  • 在 iOS 中,如何以编程方式填写 pdf 表单字段?

    我需要获取一个现有的 pdf 文件 并以编程方式填写带有文本的表单字段列表 然后保存 pdf 而不将其显示给用户 例如 如果 pdf 文件包含名为 LastName 和 FirstName 的字段 我想将 FirstName 的值设置为 L
  • 自定义信息窗口上的按钮未接收 ios 中的操作

    我在 iOS 应用程序中使用 Google 地图 并实现了一个自定义信息窗口来显示标记的标题 现在 我在该自定义信息窗口上添加了一个按钮 但我的问题是按钮操作方法没有被调用 自定义信息窗口 h import
  • iOS后台获取时间限制崩溃

    我已经设置了背景获取 使用大纲NSScreencast 第 92 集 http nsscreencast com episodes 92 background fetch BOOL application UIApplication app
  • iPhone:每日本地通知

    我正在尝试实现本地通知 这就是我所设置的 Current date NSDate date NSDate date Add one minute to the current time NSDate dateToFire date date
  • UICollectionView 设置列数

    我刚刚开始学习 UICollectionViews 我想知道是否有人知道如何指定集合视图中的列数 默认设置为 3 iPhone 肖像 我查看了文档 似乎找不到简洁的答案 对于 Swift 5 和 iOS 12 3 您可以使用4 以下实现为了
  • 如何本地化 iOS 故事板

    我有一个包含一些视图的 iPhone 故事板 例如 导航项标题名为News 应翻译为其他语言 当我向故事板添加新的本地化版本时 它会为新语言创建当前故事板的副本 在这里我可以更改导航项的标题 但对我来说它似乎不太有用 如果我的故事板包含 1
  • 如何从标签栏控制器上方显示 UIActionSheet 视图?

    我需要在选项卡栏控制器上方显示操作表 我的意思是 即使操作表视图处于可见模式 我也能够看到选项卡栏控制器 因此 请建议如何从选项卡栏控制器上方查看 是否可以 其次 如何更改操作表的背景颜色和取消按钮背景颜色 请帮我 谢谢你 马丹 莫汉 要从
  • 增加 iPhone 的推送通知徽章

    是否可以在收到通知时增加徽章值 或者我应该将计数作为有效负载发送吗 如果我每次都将徽章值发送为 1 那么如果应用程序未打开 我如何增加应用程序图标中的徽章值 我已经使用了这段代码 但不起作用 void application UIAppli
  • 找不到 Cocoa/Cocoa.h 文件

    我在用XMPPFramework在我的应用程序中 我已将 Cocoa Cocoa h 导入到我的 m 文件中 但是当我构建项目时Xcode显示错误 错误 未找到 Cocoa Cocoa h 文件 我该如何解决这个错误 如果您正在为 iOS

随机推荐