注意:有发布超过Objective C的一个类似的问题在这里,但我想实现它迅速.
我有一个像swift一样声明的类:
import UIKit
class EachDayCell : UITableViewCell
{
@IBOutlet var dateDisplayLabel : UITextField
@IBOutlet var nameDisplayLabel : UITextField
@IBAction func goToPendingItems(sender : AnyObject) {
}
@IBAction func showDateSelectionPicker(sender : AnyObject) {
}
init(style: UITableViewCellStyle, reuseIdentifier: String!)
{
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想在swift中获取一个数组:dateDisplayLabel,nameDisplayLabel.
我怎样才能做到这一点?
是否有一个方法返回符合NSKeyValueCoding协议的对象的所有键?
沿着这条线的东西[object getPropertyKeys]将返回NSString对象的NSArray.它适用于任何符合KVC标准的对象.这种方法存在吗?到目前为止,我还没有找到任何搜索Apple文档的内容.
谢谢,G.
cocoa properties introspection objective-c key-value-observing
我想JSON序列化我自己的自定义类.我在Objective-C/iOS5工作.我想要做以下事情:
Person* person = [self getPerson ]; // Any custom object, NOT based on NSDictionary
NSString* jsonRepresentation = [JsonWriter stringWithObject:person ];
Person* clone = [JsonReader objectFromJson: jsonRepresentation withClass:[Person Class]];
Run Code Online (Sandbox Code Playgroud)
似乎NSJSONSerialization(和其他几个库)要求'person'类基于NSDictionary等.我想要一些能够序列化我想要定义的任何自定义对象(在合理范围内).
让我们假设Person.h看起来像这样:
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property NSString* firstname;
@property NSString* surname;
@end
Run Code Online (Sandbox Code Playgroud)
我希望为实例生成的JSON看起来类似于以下内容:
{"firstname":"Jenson","surname":"Button"}
Run Code Online (Sandbox Code Playgroud)
我的应用程序使用ARC.我需要一些能够使用对象进行序列化和反序列化的东西.
非常感谢.
我使用以下代码迭代对象的所有属性.我成功地检索property name的char,但我不知道如何得到property value它的id类型.有关如何实现这一目标的任何想法?
objc_property_t *allProperties = class_copyPropertyList([currentObject class], &allPropertyCount);
for (unsigned int i = 0; i < allPropertyCount; i++) {
objc_property_t property = allProperties[i];
const char * propertyName = property_getName(property);
}
Run Code Online (Sandbox Code Playgroud)
================================================== ======================================
编辑:谢谢大家的好评和答案.有些人问我为什么需要这个.嗯,原因如下:
我有几个同类的对象.让我们说这个类是Person,它的实例是玛丽,约翰和大卫.每个对象的属性设置如下:
mary.age = [NSNumber numberWithInt:20];
john.age = [NSNumber numberWithInt:45];
david.age = [NSNumber numberWithInt:20];
mary.gender = @"female";
john.gender = @"male";
david.gender = @"male";
Run Code Online (Sandbox Code Playgroud)
我的目的是找到一种基于给定属性名称Eg对对象进行分组的通用方法.这将创建2组[大卫和玛丽]和[约翰]:
[self groupBaseDataObjects:self.persons withPropertyName:"age"];
Run Code Online (Sandbox Code Playgroud)
还有这个:
[self groupBaseDataObjects:self.persons withPropertyName:"gender"];
Run Code Online (Sandbox Code Playgroud)
还将创建2组[约翰和大卫]和[玛丽]
我想知道,如何从AppDelegate = [[UIApplication sharedApplication] delegate]iPhone编程中获取navController .例如,在我们引用AppDelegate的其他viewController中.
在applicationDelegate.h中,我们有:
UINavigationController *navController;
Run Code Online (Sandbox Code Playgroud)
以及applicationDelegate.m中的以下内容
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview: navController.view];
[window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)
无论如何从mainWindow获取navController:
UIWindow *mainWindow = [appDelegate window];
Run Code Online (Sandbox Code Playgroud) iphone objective-c uinavigationcontroller uiapplicationdelegate ios
我正在构建我的第一个iPhone/Obj-c应用程序,我有大量的数据保存子类,我将其传递给一个引用函数.对于引用函数,这些对象是匿名的,我需要找到一种方法来访问每个传递对象的所有变量.我一直在使用预先构建的NSArray和选择器来执行此操作,但是有超过30个条目(并且正在增长),手动执行它是一种愚蠢的行为.必须有一种方法来动态查找匿名对象的所有变量.
该OBJ-C运行时运行文档提到这个问题,但据我可以告诉这是不是可以在iPhone OS.如果是,那么我不理解实施,需要一些指导.之前曾问过一个类似的问题,但我认为他们再次讨论OSX而不是iPhone.
有什么想法吗?
-(NSString*)cite:(id)source {
NSString *sourceClass = NSStringFromClass([source class]);
// Runs through all the variables in the manually built methodList
for(id method in methodList) {
SEL x = NSSelectorFromString(method);
// further implementation
// Should be something like
NSArray *methodList = [[NSArray alloc] initWithObjects:[source getVariableList]]
for(id method in methodList) {
SEL x = NSSelectorFromString(method);
// Further implementation
}
Run Code Online (Sandbox Code Playgroud) 我想将一个对象的实例转换为该对象类的子类的实例,以便我可以在Objective-C中使用该子类的其他方法和属性.
如何以不需要在复制方法中对该对象类的属性进行硬编码的方式执行此操作?
有没有办法自动返回类中所有(公共)属性的NSDictionary?您可以假设所有属性都是属性列表,并且我不想只是将指针移交给类本身.任何现有的魔法可以解决这个问题?
我知道我可以懒惰地实例化一个NSDictionary并手动用getter中的属性填充它.
objective-c ×7
ios ×4
iphone ×4
properties ×3
class ×1
cocoa ×1
ipad ×1
json ×1
macos ×1
nsdictionary ×1
nsobject ×1
swift ×1