Скопировать одну NSString в другую

Как скопировать одну NSString в другую?

@interface MyData : NSObject
{
    @private

    //user's private info
    NSInteger uID;
    NSString *name;
    NSString *surname;
    NSString *email;
    NSString *telephone;

    //user's picture
    UIImage *image;
}

@property (nonatomic, assign) int uID;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *surname;
@property (nonatomic, retain) NSString *email;
@property (nonatomic, retain) NSString *telephone;
@property (nonatomic, retain) UIImage *image;
@end

У меня есть два объекта этого типа. MyData *obj1, obj2;

Сначала инициализируется. Второе я хочу инициализировать первым.

obj2 = [obj1 copy];   //crashes

    newData.surname = data.surname;   //crashes to
    newData.email = data.email;
    newData.telephone = data.telephone;

Мне нужна копия второго объекта НЕ СОХРАНИТЬ!!! Помогите, пожалуйста! Thanx!

3 ответа

Решение

Ваш объект, вероятно, должен реализовать саму копию:

@implementation MyData

-(id)copyWithZone:(NSZone *)zone
{
    MyData *obj = [[[self class] alloc] init];
    obj.uID = self.uId;
    obj.name = self.name
    ...
    return obj;
}

....
@end

Вы можете использовать метод NSString stringWithString.

Смотрите также stringwithstring, какой смысл? чтобы понять, когда это может быть предпочтительнее, чем просто дать ему ту же строку.

Измените @ свойство, чтобы использовать копию вместо сохранения:

@property (nonatomic) int uID;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *surname;
@property (nonatomic, copy) NSString *email;
@property (nonatomic, copy) NSString *telephone;
@property (nonatomic, copy) UIImage *image;

Обратите внимание, что вам также не нужно назначать для uID. Просто опустите эту часть. Затем вы можете легко создать копию, выделив и запустив второй объект MyData и назначив свойства:

MyData data = [[MyData alloc] init];
newData.surname = data.surname;   
newData.email = data.email;
newData.telephone = data.telephone;
Другие вопросы по тегам