我目前正在尝试通过阅读书籍和在线教程来学习Objective-C,同时参考Apple文档,但有些事情只是不要点击.我有关于类的问题,我已经使用NSString一段时间了,而没有过多地关注它的使用方式.
我的印象是,为了让某人能够使用Objective-C中某个类的方法,你首先需要实例化它,比如...
ClasssName *varName = [[ClassName alloc]init];
Run Code Online (Sandbox Code Playgroud)
然后你会调用像......这样的方法
[varName someMethod];
Run Code Online (Sandbox Code Playgroud)
但是看看如何使用NSString我现在有点困惑,例如这里我们通常会如何使用它...
NSString *someString = @"some text here";
[someString stringByAppendingFormat: @"some text = %d", 3];
Run Code Online (Sandbox Code Playgroud)
按照我所读到的关于类的内容,我们需要做以下的事情.
NSString *someString = [[NSString alloc]initWithString: @"some text here"];
[someString stringByAppendingFormat: @"some text = %d", 3];
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么有些类在使用其方法之前不需要实例化吗?
我一直在网上试图了解工厂方法是什么,但我没有找到任何显示具体例子的简单例子.我简要介绍了其中一本书,但它没有展示一个例子,也没有解释它们是什么"类方法通常用作工厂方法".
1- Objective-C中工厂方法的语法和用法是什么? 这是我找到的最接近的答案,但是当我在评论中尝试这个例子作为答案时,我收到一条消息说我不能打电话给超级.在这个问题中,我更关注工厂方法的实现语法.
2-工厂方法在其他语言中是什么叫做构造函数?
3-工厂方法与单身人士相比如何?
来自Apple文档:
它们在一个步骤中组合分配和初始化,并返回创建的对象
单身人士不是吗?
在下面的单例示例中,我们可以说类方法sharedData是一个工厂方法吗?
.m文件
#import "SingletonModel.h"
@implementation SingletonModel
static SingletonModel *sharedData;
- (id) init {
if (self = [super init]) {
// custom initialization
}
return self;
}
// is this a factory method?
+(SingletonModel*) sharedData
{
if (!sharedData) {
sharedData = [[SingletonModel alloc]init];
}
return sharedData;
}
@end
Run Code Online (Sandbox Code Playgroud) 以下两个示例中的哪一个最适合检查boolean
密钥是否存在NSUserdefaults
?
1-这可以接受吗?
if NSUserDefaults.standardUserDefaults().boolForKey("myKey"){
print("Key Does Exist")
}
Run Code Online (Sandbox Code Playgroud)
2-这是首选方式吗?
if (NSUserDefaults.standardUserDefaults().objectForKey("myKey") != nil) {
print("Key Does Exist")
}
Run Code Online (Sandbox Code Playgroud) 在下面的代码中,我有三个按钮,显示何时点击inputField.现在按钮显示但是所有这些按钮都向左移动了,我想要做的就是让它们均匀分布空间,并保持它们像那样,无论它们在哪个手机上观看.
如何均匀分隔UIToolbar中的按钮?
码:
override func viewDidLoad() {
super.viewDidLoad()
addButtonsToKeyboard()
}
// Reusable Button
func configurButton(button:UIButton) {
button.backgroundColor = UIColor.whiteColor()
button.layer.cornerRadius = 5
button.layer.borderWidth = 1.0
button.layer.borderColor = UIColor.blueColor().CGColor
button.setTitleColor(UIColor.lightGrayColor(), forState: .Normal)
button.setTitleColor(UIColor.blueColor(), forState: .Highlighted)
button.frame = CGRect(x:0, y:0, width:50, height:35)
button.addTarget(self, action: #selector(customKeyPressed), forControlEvents: UIControlEvents.TouchUpInside)
}
func addButtonsToKeyboard(){
// First button
let button1 = UIButton()
button1.setTitle("Btn 1", forState: .Normal)
configureButton(button1)
let barButton1 = UIBarButtonItem()
barButton1.customView = button1
// Second button
let button2 = UIButton()
button2.setTitle("Btn 2", forState: .Normal)
configureButton(button2)
let …
Run Code Online (Sandbox Code Playgroud) 我有一个iOS购物清单应用程序,其中的项目被添加并显示在tableView中.我想创建一个Watch App Extension但是我想在这种情况下使用什么是最好的函数调用,updateApplicationContext(:)方法或sendMessage(:replyHandler:errorHandler :)方法我正在阅读文档但是我因为两者似乎都有效,所以有点困惑.
这是我期望拥有的功能......
我想要的是能够在iOS应用程序中添加项目,即使Watch应用程序处于关闭状态,这是正常行为,但我希望Watch应用程序更新为tableView(在iOS中)中的任何内容,只要它是打开,即使手表开启时iPhone未打开.
换句话说,我希望iOS应用中的数据始终与Watch应用同步.
在这种情况下,哪种updateApplicationContext(_:)
方法或 sendMessage(_:replyHandler:errorHandler:)
方法使用的函数最好?
谢谢
有没有办法在 0 索引处插入新项目到Realm
容器?我在Realm
类中没有看到插入方法。
我需要使用List
s 吗?如果答案是肯定的,我如何重构以下代码以能够使用List
s 并使 List 与Realm
容器保持同步。换句话说,我很难想出一种在添加和删除时保持Realm
容器和List
相同项目的好方法。
在以下代码中,在最后一个索引处输入新项目。如何重组它以便能够在 0 索引处插入项目?
import RealmSwift
class Item:Object {
dynamic var productName = ""
}
Run Code Online (Sandbox Code Playgroud)
let realm = try! Realm()
var items : Results<Item>?
var item:Item?
override func viewDidLoad() {
super.viewDidLoad()
self.items = realm.objects(Item.self)
}
func addNewItem(){
item = Item(value: ["productName": productNameField.text!])
try! realm.write {
realm.add(item!)
}
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { …
Run Code Online (Sandbox Code Playgroud) 我正在尝试了解迁移,有人可以描述需要迁移的情况吗?
例如,让我们假设一个应用程序已经发布并使用了以下Realm
对象,但现在需要发布版本 2 并且Realm
向这个新版本添加了一个新对象,我需要迁移吗?
import Foundation
import RealmSwift
class Item:Object{
dynamic var productName:String = ""
dynamic var createdAt = NSDate()
}
import Foundation
import RealmSwift
class ItemList: Object {
dynamic var listName = ""
dynamic var createdAt = NSDate()
let items = List<Item>()
}
Run Code Online (Sandbox Code Playgroud)
版本 2 需要一个新对象。
import Foundation
import RealmSwift
class Item:Object{
dynamic var productName:String = ""
dynamic var createdAt = NSDate()
}
import Foundation
import RealmSwift
class ItemList: Object { …
Run Code Online (Sandbox Code Playgroud) 好的,我认为是时候得到一些帮助,我一直在练习Qt中的信号和插槽,我得到了库存.我想要的是能够在单击QDialog中的按钮时更改主窗口中的标签.我一直在寻找,显然唯一的方法是基本上使用信号和插槽,这是我有...
我有一个mainwindow.ui,一个名为"pushButton_OpenWindow"的按钮和一个QLabel label_ShowText",我还有一个包含一个名为lineEdit_ExternalInput的QLineEdit的externaldialog.ui"和一个名为"pushButton_SendText"的QPushButton,我想要的是更改"label_ShowText" "无论什么价值"lineEdit_ExternalInput"当点击pushButton_SendText"但它不起作用,当我点击按钮时没有任何错误发生,没有任何警告.
这是不起作用的代码......
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_OpenWindow_clicked();
void textValue(const QString &newText);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "externaldialog.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ExternalDialog *externalDialog = new ExternalDialog;
// connecting signals and slots
QObject::connect(externalDialog, SIGNAL(textChanged(QString)), this, SLOT(textValue(QString)));
}
MainWindow::~MainWindow() …
Run Code Online (Sandbox Code Playgroud) 我有两个文本框,在我的 ViewModel 中我希望能够跟踪当前处于焦点的框。
<TextBox x:Name="textBox1" Text="Text Box 1"/>
<TextBox x:Name="textBox2" Text="Text Box 2"/>
Run Code Online (Sandbox Code Playgroud)
如何从我的 ViewModel 中读取/识别当前处于焦点的文本框?
这是我目前UI Element Colors
在深色模式下处理旧版本操作系统的方式。
extension UIColor {
class var mySystemBackground: UIColor {
if #available(iOS 13, *) {
return .systemBackground
} else {
return .white
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,可以systemBackground
知道它何时处于暗模式下以及何时处于亮模式下,并相应地进行了更改。我想使用自定义颜色做类似的事情。
例如,我有一个自定义的黄色,当前正在整个应用程序中使用,我想为处于深色模式的用户提供不同的颜色。
这是我在想的代码...
extension UIColor{
class var mySystemYellowColor: UIColor {
// default light-color
var myYellow = UIColor(red: 254/255, green: 219/255, blue: 2/255, alpha: 1.0) /* #fedb02 */
if #available(iOS 13.0, *) {
if traitCollection.userInterfaceStyle == .light {
return myYellow
} else {
// color for dark mode in iOS 13.0 …
Run Code Online (Sandbox Code Playgroud)