无法初始化自定义类

时间:2013-08-25 11:30:58

标签: iphone ios objective-c

我创建了一个用于保存用户和设备信息的类。这个名为Account的班级。 这是类代码(ARC项目):

#import <Foundation/Foundation.h>
@interface Account : NSObject
@property(strong, nonatomic) NSString *deviceID;
@property(strong, nonatomic) NSString *accountID;
@property(strong, nonatomic) NSString *oAuthCode;
@property(strong, nonatomic) NSString *type;
@property(strong, nonatomic) NSString *deviceToken;
@property(strong, nonatomic) NSString *os;
@property(strong, nonatomic) NSString *deviceName;
@end



#import "Account.h"

@implementation Account

 @synthesize deviceID = _deviceID;
 @synthesize deviceName = _deviceName;
 @synthesize deviceToken = _deviceToken;
 @synthesize type = _type;
 @synthesize oAuthCode = _oAuthCode;
 @synthesize accountID = _accountID;
 @synthesize os = _os;



 -(NSString*)deviceID{
     return [ThinkerBell_OpenUDID value];
 }

 -(NSString*)deviceToken{
     return [[NSUserDefaults standardUserDefaults]valueForKey:K_DEVICE_TOKEN];
 }

 -(NSString*)os{
     return [[UIDevice currentDevice]systemVersion];
 }

 -(NSString*)deviceName{
     return [[UIDevice currentDevice]model];
 }
 @end

这里我正在创建一个实例并试图访问他的属性:

 _ac = [[Account alloc]init];
_ac.accountID = @"rf@gmmail.com";
_ac.type = @"rf@gmmail.com";
_ac.oAuthCode = @"rf@gmmail.com";
_ac.deviceName = @"rf@gmmail.com";
_ac.deviceToken = @"rf@gmmail.com";
_ac.deviceID = @"rf@gmmail.com";
_ac.os = @"rf@gmmail.com";

我将此对象作为方法的参数传递:

    [self appendAccount:_ac];

当我尝试阅读Account实例时,他的字段是。

 -(void)appendAccount:(Account*)account{
     NSLog(@"%@",account);
 }

任何想法?

2 个答案:

答案 0 :(得分:1)

这是因为你没有设置来反映吸气剂。该值写入_deviceid,但是从thinkerbell中读取......

答案 1 :(得分:1)

您的类中没有实现“description”方法,因此NSLog没有任何可以打印出来的方法。

以下是你如何做到的:

@implementation Account

- (NSString *)description
{
  return [NSString stringWithFormat:@"<Account ID %@>", self.accountID];
}

@end

此外,删除这些代码行,通常不需要它们并且可能导致问题:

 @synthesize deviceID = _deviceID;
 @synthesize deviceName = _deviceName;
 @synthesize deviceToken = _deviceToken;
 @synthesize type = _type;
 @synthesize oAuthCode = _oAuthCode;
 @synthesize accountID = _accountID;
 @synthesize os = _os;

(你可能从旧的示例代码中得到了这个,我建议找一些更近期和更新的东西)