【问题标题】:Copying one NSString into other one Xcode将一个 NSString 复制到另一个 Xcode
【发布时间】:2016-11-21 10:55:30
【问题描述】:

我在 Xcode 中遇到问题。我正在尝试将一个 NSString 复制到另一个中,但无法正常工作。

原来的 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

餐厅.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: (null)

我能做什么?我知道我的 Xcode 水平很低,但我需要你的帮助。非常感谢。

【问题讨论】:

  • 你检查过_pageTitle的内容了吗?
  • 你在哪里设置_pageTitle?
  • 你不能从你的 RestViewController 传递任何值。是 _DetailModal 成为本地的,不包含全局值。您如何从一个控制器切换到另一个控制器
  • @PrafukD 抱歉,我写问题的时候忘记设置了
  • @NarendraPandey 没有办法解决吗?是不可能复制的吗?谢谢!

标签: ios objective-c iphone xcode nsstring


【解决方案1】:

首先初始化 DataModel 的实例。

然后继续分配

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

已经定义了一个实例方法来执行该任务。

在此之后,您还可以通过以下方式更改值

_DetailModal.title = @"title_of_yours"

【讨论】:

    【解决方案2】:

    如果必须使用detailmodal,则必须分配餐厅类对象(detailmodal)。那么就只能使用对象了。

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

    【讨论】:

      【解决方案3】:

      在你可以使用一个对象之前,你必须先创建它。

      DetailModal *detailModal = [DetailModal new];
      

      这样会创建对象并保留存储到类属性的值。

      【讨论】:

      • 如果没有分配,我希望它在尝试打印任何内容之前崩溃
      • 在早期版本的 Xcode 中确实如此。如今,它只是“忽略”了对未分配对象的所有操作。在您的代码中很难找到错误。
      【解决方案4】:

      试试:

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

      (没有测试这个)

      【讨论】:

      • 这是万一文森特的回答无关紧要。
      【解决方案5】:

      请检查你 _DetailModal 不是 nil

      如果是 nil 那么

      首先你需要为你的 DetailModal 类对象分配内存

      喜欢这个

      DetailModal *detailModal = [DetailModal new];
      

      然后在设置你想要的值之后

       detailModal.title = _pageTitle;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-08
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多