在 iPhone 应用程序中分配 NSInteger 属性
Posted
技术标签:
【中文标题】在 iPhone 应用程序中分配 NSInteger 属性【英文标题】:Assigning NSInteger property in iPhone App 【发布时间】:2012-08-29 19:37:45 【问题描述】:我在 SQLite 中有一个表,我想在该表中插入数据。该表有responses_id、participant_id、answer_text、answer_option_update_date_time。 response_id 和participant_id 是整数。当我将任何东西分配给参与者 ID 时,它会给出错误,对象不能设置为属性。
@interface Coffee : NSObject
NSInteger coffeeID;
NSInteger participant_Id;
NSString*question_Id;
NSString*answer_option;
NSString*answer_text;
NSString*update_date_time;
//Intrnal variables to keep track of the state of the object.
@property (nonatomic, readonly) NSInteger coffeeID;
@property (nonatomic, retain) NSInteger participant_Id;
@property (nonatomic, copy) NSString *question_Id;
@property (nonatomic, copy) NSString *answer_option;
@property (nonatomic, copy) NSString *answer_text;
@property (nonatomic, copy) NSString *update_date_time;
- (void)save_Local
CereniaAppDelegate *appDelegate = (CereniaAppDelegate *)[[UIApplication sharedApplication] delegate];
Coffee *coffeeObj = [[Coffee alloc] initWithPrimaryKey:0];
coffeeObj.participant_Id=mynumber;
NSString*question="1";
coffeeObj.question_Id=question;
coffeeObj.answer_option=selectionAnswerOption;
coffeeObj.answer_text=professionTextField.text;
NSDate* date = [NSDate date];
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:MM:SS"];
NSString* str = [formatter stringFromDate:date];
UPDATE_DATE_TIME=str;
coffeeObj.update_date_time=UPDATE_DATE_TIME;
//Add the object
[appDelegate addCoffee:coffeeObj];
当我为参与者 ID 赋值时,它会报错。
【问题讨论】:
【参考方案1】:NSInteger
不是一个类,它是一个基本类型,如int
或long
。在 ios 上,NSInteger
是 typedef
ed 到 int
,在 OS X 上是 typedef
ed 到 long
。因此,您不应该尝试retain
和NSInteger
。您应该将您的属性声明更改为:
@property (nonatomic, assign) NSInteger participant_Id;
coffeeID
属性也是如此。
【讨论】:
如果您确实希望它成为一个对象,您可以将其包装在NSNumber
中。
没问题。人们通常会认为 NSInteger
和 NSUInteger
是类。
以及如何将值传递给类?以上是关于在 iPhone 应用程序中分配 NSInteger 属性的主要内容,如果未能解决你的问题,请参考以下文章
为啥我们可以直接在ByteBuffer中分配字节而不在FloatBuffer中分配浮点数