将一个 NSString 复制到另一个 Xcode
Posted
技术标签:
【中文标题】将一个 NSString 复制到另一个 Xcode【英文标题】:Copying one NSString into other one 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 没有办法解决吗?是不可能复制的吗?谢谢! 【参考方案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;
【讨论】:
以上是关于将一个 NSString 复制到另一个 Xcode的主要内容,如果未能解决你的问题,请参考以下文章
将 Localizable.Strings 从一个项目复制到另一个项目
XCode iOS — 将一些文本共享到另一个应用程序 — 仅邮件和 SMS 选项可用