在iPhone App中分配NSInteger属性

Naz*_*Jan 6 sqlite iphone xcode objective-c ios

我在SQLite中有一个表我想在该表中插入数据.该表有respond_id,participant_id,answer_text,answer_option_update_date_time.responses_id和participant_id是整数.当我将任何事物分配给participant_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];  
}
Run Code Online (Sandbox Code Playgroud)

当我为participant_id分配值时,它会给出错误.

mtt*_*trb 35

NSInteger不是一个类,它是一个基本类型,如int或long.在iOS NSInteger上typedef编辑int,在OS X上typedef编辑为a long.所以,你不应该尝试retain的NSInteger.您应该将您的财产声明更改为:

@property (nonatomic, assign) NSInteger participant_Id;
Run Code Online (Sandbox Code Playgroud)

您的coffeeID财产也是如此.

  • 如果你确实希望它成为一个对象,你可以将它包装在一个`NSNumber`中. (2认同)