例:
我想做一个INSERT来添加---> 2 | some_data2.是否有SQL命令或某种方式执行此操作?
[编辑]
好的.也许如果我解释每件事我想要完成什么,你会明白我为什么要做我想做的事情.我在php中创建一个Web管理页面,只显示数据库表中的数据.现在这些显示的行是"可拖动的".例如,您可以将第2行拖到第4行.现在在"mouseup"事件中,我想将新订单保存在数据库中.
1 | data1 -------------------------> 1 | data1
2 | data2 -------拖动后-----> 3 | data3
3 | data3 -------------------------> 4 | data4
4 | data4 -------------------------> 2 | data2
看到我的问题?我不能仅仅更新INDEX列中拖动的一个值的值.我将不得不更新拖过的所有值.3必须成为一个2,4一个3和2必须成为新的4.这是太多的SQL更新(特别是如果表更大).所以我想删除第2行并将其插入正确的位置.
我使用NSInvocationOperation
与NSOperationQueue
在iOS5的发展.根据关于调用对象的 apple文档:
NSInvocationOperation类是NSOperation的具体子类...此类实现非并发操作.
好的,所以我的NSInvocationOperation
对象同步执行?(在此纠正我)Apple的文档也说明了操作队列对象:
在iOS中,操作队列不使用Grand Central Dispatch来执行操作.它们为非并发操作创建单独的线程,并从当前线程启动并发操作.
我正在使用NSInvocationObject
,这是一个非并发对象,并将其添加到操作队列,如下所示:
[operationQueue addOperation:operation];
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:1)由于操作队列将产生一个单独的线程来执行文档中所说的NSInvocationObject,它是否会异步运行而不是同步运行?
[更新 - 回应Dani的回答如下.取自Apple链接.
NSOperation和NSOperationQueue
有许多不同的方法可以使用NSOperation,但最常见的是编写自定义子类并覆盖一个方法:main.当NSOperationQueue计划运行时,调用main方法执行操作.以这种方式编写的NSOperation类称为非并发操作,因为开发人员不负责生成线程 - 多线程全部由超类处理.(不要被术语混淆:仅仅因为操作是非并发的,并不意味着它不能同时执行,它只是意味着你不必自己处理并发.)
如果您需要更多地控制线程和操作的运行时环境,则可以使用并发操作.为此,您继承NSOperation并覆盖start方法.在start方法中,您可以在调用main方法之前生成线程并设置环境.您还需要通过设置isExecuting和isFinished等属性来维护NSOperation的状态.简而言之,并发操作可以为您提供更多控制,但也需要更多的努力 - 对于大多数任务而言,非并发操作就足够了.
concurrency cocoa multithreading objective-c grand-central-dispatch
这就是我所做的.
我去了appDelegate.h文件并做了
` - @ Property(assign)IBOutlet NSViewController*popVC;
然后我去了applicationDidFinishLaunching:
方法并做了
popVC = [[NSViewController alloc] init];
结果:我收到以下错误消息:
笔尖上的对象是否应该是弱的,因为它已经被笔尖拥有了?
存在observationInfo
返回对象的绑定的信息的方法.我环顾四周但我不知道如何从字典中获取信息.任何人都可以带领我朝着正确的方向前进吗?
编辑
以防任何人误解我说的话.我的课程已经全部符合KVO标准.现在,将观察者添加到something
对象后,self.something
现在将具有绑定信息.如果我做[self.something observationInfo],这将返回一个字典.我想访问该词典的内容.
Apple医生说
为了提高性能,可以重写此方法和setObservationInfo:以将不透明数据指针存储在实例变量中.此方法的覆盖不得尝试将Objective-C消息发送到存储的数据,包括保留和释放.
所以我知道它可以做到......我的问题是如何做到的?我看不到任何信息在线.
@interface myViewController ()
@property (nonatomic, copy) NSString* (^translateKey)(NSString *);
@property (nonatomic, copy) NSString *aString;
@end
Run Code Online (Sandbox Code Playgroud)
情况1
@implementation
-(void)viewDidLoad {
_translateKey = ^NSString*(NSString* translationKey){
return _aString;
};
}
@end
Run Code Online (Sandbox Code Playgroud)
案例#2
@implementation
-(void)viewDidLoad {
NSString * (^translationKeyBlock)(NSString *) = ^NSString*(NSString* translationKey){
return _aString;
};
_translateKey = translationKeyBlock;
}
Run Code Online (Sandbox Code Playgroud)
这是objectiveC块
@property (copy) void (^anObjcBlock)();
anObjcBlock = ^{
NSLog(@"Yea man this thing works!!");
};
NSMutableArray *theArrayThatHasTheBlockInItAtIndexZero = [NSmutableArray array];
[theArrayThatHasTheBlockInItAtIndexZero addObject:anObjBlock];
Run Code Online (Sandbox Code Playgroud)
这是我迅速做的:
var theBlock: ( ()->Void) ?
theBlock = theArrayThatHasTheBlockInItAtIndexZero[0] as? ()->Void
//Now call the block
theBlock!()
Run Code Online (Sandbox Code Playgroud)
但是与此同时我得到运行时错误。基本上,由于失败,该theBlock = theArrayThatHasTheBlockInItAtIndexZero[0] as? ()->Void
语句将为theBlock
nil as?
。当我将语句更改theBlock = theArrayThatHasTheBlockInItAtIndexZero[0] as! ()->Void
为时,出现运行时错误
我不确定该怎么办。这是一个空项目,实际上没有任何代码。
通常我会像这样创建我的swift字典:
var myDict: [String: String]
Run Code Online (Sandbox Code Playgroud)
但是,我如何创建一个可以包含值,只有String或Bool的Dictionary?
如果我像下面的代码一样声明字典
var myDict: [String: Any]
Run Code Online (Sandbox Code Playgroud)
然后我的数组现在能够容纳任何我不想要的对象.有没有办法声明Dictionary只接受String
和Bool
赋值类型?
[编辑] - 用例是:我需要有一个键和值的字典.但我只想将值限制为Strings或Bools.没有其他的.目标是最终使用此Dictionary转换为JSON格式以发送到某个服务器.基于下面的答案,我唯一的选择是枚举还是类/结构?我想知道是否有办法让Bool和String符合某些协议?
这个想法可能是这样声明字典
var myDict : [String: stringOrBool]
Run Code Online (Sandbox Code Playgroud)
并填写这样的字典
myDict["firstKeyStringValue"] = "my first string value" // This should work
myDict["firstKeyBoolValue"] = true // This should work
myDict["someOtherKey"] = 123 // This should fail
Run Code Online (Sandbox Code Playgroud)
编辑2 根据下面的答案,我选择了协议方法,因为它在语法上更容易.但正如鲶鱼在评论中提到的那样,它可能会占用更多的内存.
应用程序的本质是一个UITableView,当用户向下滚动tableView时,它会在每一行显示UIImages.如何在不破坏VIPER架构的情况下将图像加载到单元格中?
--VC code--
func cellForRowAtIndexPath...... {
var cell = dequeueCellWithIdentifier.....
//Method 1
cell.image = outputInteracter.loadImage("someHttpImageLink")
//Method 2. - using a completion block
outputInteracter.loadImage(anImage -> {
cell.image = anImage
}
}
Run Code Online (Sandbox Code Playgroud)
上述两种方法似乎都打破了VIP,因为演示者没有参与,并且在VIP的边界之间没有传递任何结构
您如何建议使用TableView的UIImages进行异步调用以使用VIP下载图像(不阻止主线程)?我可以让呼叫模式像这样,但我对第4步感到困惑:
任何帮助将不胜感激.
isEnabled
SwiftUI按钮没有属性。我如何知道它是否启用?
在常规的UIKit中,我只会做
if button.isEnabeld == true {
} else {
}
Run Code Online (Sandbox Code Playgroud)
但是没有等效的SwiftUI。
我正处于一个需要调用系统命令的项目中.我最初开始关注NSTask(因为这似乎是最流行的方法),但最近我刚刚遇到了system
命令.它看起来像NSTask更容易设置.我看到一些问题/答案说NSTask是更好的方法,但我没有看到
任何帮助/链接/想法/想法?(是的..我做了谷歌搜索)
cocoa ×6
objective-c ×6
cocoa-touch ×3
swift ×3
ios ×2
binding ×1
concurrency ×1
database ×1
insert ×1
mysql ×1
nib ×1
nspopover ×1
nstask ×1
sql ×1
swiftui ×1