ошибка при использовании объекта: "lvalue требуется как левый операнд присваивания" - PullRequest
2 голосов
/ 20 июля 2009

Я получаю странную ошибку при назначении значения одному из моих объектов. Насколько я могу понять, компилятор считает, что я назначаю переменную только для чтения. В строке myPlace.publicLocation ... отображается значение lvalue, необходимое в качестве левого операнда присваивания.

Я уверен, что это классическая ошибка новичка - где я ошибаюсь?

CSPlace *myPlace;
myPlace.publicLocation.coordinate.latitude = 
    [[separatedData objectAtIndex:0] floatValue];

Класс:

#import <CoreLocation/CLLocation.h>
@interface CSPlace : NSObject {
    CLLocation *publicLocation;
}
@property (copy, nonatomic) CLLocation *publicLocation;
@end
#import "CSPlace.h"
@implementation CSPlace
@synthesize publicLocation;
@end

Ответы [ 4 ]

6 голосов
/ 20 июля 2009

CLLocation неизменный класс по широте и долготе. Таким образом, вы не можете изменить его широту. Вы должны создать новый объект:

[[CLLocation alloc] initWithLatitude:latitude longitude:longitude];

Быть неизменным - это весь смысл наличия такого инициализатора.

0 голосов
/ 20 июля 2009

coordinate - это , определенное как свойство только для чтения CLLocation ... так что, похоже, вам нужно создать новое CLLocation вместо изменения значения координаты существующего.

0 голосов
/ 20 июля 2009

Насколько я могу понять, компилятор считает, что я назначаю переменную только для чтения.

Вы пытаетесь назначить свойство только для чтения:

@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;

0 голосов
/ 20 июля 2009

Я не эксперт Objective-C, но я понимаю, что это C-суперсет ... так не должно быть:

myPlace->publicLocation->coordinate.latitude

(с "->" вместо ".", Я не знаю для "координаты", если это указатель или нет)

Редактировать: Кроме того, очень вероятно, что ваша программа потерпит крах, если вы попытаетесь получить доступ к атрибутам нераспределенного объекта, myPlace в вашем случае не будет выделен.

Редактировать 2: см. Комментарий Джона ниже, почему мой ответ следует игнорировать. (Я оставляю это, хотя, поскольку это могло бы когда-нибудь служить кому-то, делающему ту же самую ошибку)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...