скопировать одну NSString в другую - PullRequest
1 голос
/ 17 ноября 2010

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

5 голосов
/ 17 ноября 2010

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

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

4 голосов
/ 17 ноября 2010

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

@implementation MyData

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

....
@end
2 голосов
/ 17 ноября 2010

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

@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;
...