2016-11-21 6 views
0

У меня проблема с Xcode. Я пытаюсь скопировать одну NSString в другую, но не работает.Копирование одной NSString в другую Xcode

оригинальный NSString PAGETITLE находится на RestViewController: Это мой RestViewContoller.h:

#import <UIKit/UIKit.h> 
#import "Restaurant.h" 

@interface RestViewController : UIViewController 

@property (strong, nonatomic) IBOutlet UILabel *TitleLabel; 
@property (strong, nonatomic) IBOutlet UILabel *DescriptionLabel; 
@property (strong, nonatomic) IBOutlet UIImageView *ImageView; 

@property (nonatomic, strong) Restaurant *DetailModal; 

@property (nonatomic, strong) NSString *pageTitle; 
@property (nonatomic, strong) NSString *pageDescription; 

@end 

NSString Я хочу, чтобы сохранить данные на RestViewController:

@property (nonatomic, strong) Restaurant *DetailModal; 

но является классом ресторана.

Мой класс Ресторан: Restaurant.h:

#import <Foundation/Foundation.h> 

@interface Restaurant : NSObject 

@property (nonatomic, copy) NSString *title; 
@property (nonatomic, copy) NSString *desc; 
@property (nonatomic, copy) NSString *image; 

- (instancetype)init:(NSString *)title descripiton:(NSString *)description image:(NSString *)image; 

@end 

Restaurant.m:

#import "Restaurant.h" 

@implementation Restaurant 

- (instancetype)init:(NSString *)title descripiton:(NSString *)description image:(NSString *)image { 
    self = [super init]; 
    if (self != nil) { 
     self.title = title; 
     self.desc = description; 
     self.image = image; 
    } 
    return self; 
} 
@end 

И, наконец, место, где я хочу, чтобы скопировать этот NSStrings мой RestViewController.m:

#import "RestViewController.h" 
    #import <QuartzCore/QuartzCore.h> 

    @interface RestViewController() 

    @end 

    @implementation RestViewController 


    - (void)viewDidLoad { 
     [super viewDidLoad]; 
     _pageTitle = @"Test"; 
      _DetailModal.title = _pageTitle; 
      NSLog(@"_DetailModal.title: %@", _DetailModal.title); 
    } 

    @end 

Проблема в том, что я вижу результат

NSLog (@ "_ DetailModal.title:% @", _DetailModal.title); on the console, it puts me: 2016-11-21 11: 42: 05,407 MadEat [3667: 104028] _DetailModal.title: (нуль)

Что я могу сделать? Я знаю, что у меня низкий уровень Xcode, но мне нужна ваша помощь, пожалуйста. Большое спасибо.

+0

Вы проверили содержимое _pageTitle? – PrafulD

+0

где вы устанавливаете _pageTitle? – lukwuerz

+0

вы не можете передать какое-либо значение из вашего RestViewController. _DetailModal становится локальным и не содержит глобального значения. Как вы переключаетесь с одного контроллера на другой –

ответ

1

Initailize экземпляр DataModel First.

Затем переходите с присвоением

_DetailModal = [[DetailModal alloc] init:_pageTitle descripiton:@"Desc" image:@"image"]; 

Существует метод экземпляра определен уже для выполнения задачи.

После этого также вы можете изменить значение по

_DetailModal.title = @"title_of_yours" 
+0

Большое спасибо. Это работает хорошо! –

0

Прежде чем вы сможете использовать объект, вы должны сначала создать его.

DetailModal *detailModal = [DetailModal new]; 

Таким образом, объект будет создан, и значения, сохраненные в свойствах класса, будут зарезервированы.

+0

Я бы ожидал, что он потерпит крах, прежде чем даже попытаться распечатать что-либо, если оно не было выделено – Itzik984

+0

Это было в ранних версиях Xcode. В настоящее время он просто «игнорирует», как если бы все действия были направлены на не выделенный объект. Это трудно найти в коде. – Vincent

0

Try:

_DetailModal.title = [[NSString alloc] initWithString: _pageTitle]; 

(не проверял это)

+1

Это на случай, если ответ Винсента не имеет значения. – Itzik984

+0

Благодарим за отзыв, но это не сработает! –

0

плз Чек вам _DetailModal не ноль

если это ноль затем

сначала вам нужно Alloc память для вас DetailModal Класс объекта

как это

DetailModal *detailModal = [DetailModal new]; 

затем после установки значения вы хотите

detailModal.title = _pageTitle; 
1

Если вы должны использовать detailmodal, вы должны Alloc класса ресторана объекта (detailmodal). Тогда можно использовать только объекты.

detailmodal=[[restaurant alloc]init]; 
detailmodal.title=_pagetitle;