Скопировать одну 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;