小编iOS*_*com的帖子

是否可以使用INSERT命令将数据插入表的中间部分?

例:

INDEX | 一些数据

1 | some_data1

3 | some_data3

4 | some_data4

5 | some_data5

我想做一个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行并将其插入正确的位置.

mysql sql database insert

3
推荐指数
2
解决办法
2462
查看次数

NSInvocationOperation和NSOperationQueue并发

我使用NSInvocationOperationNSOperationQueue在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

3
推荐指数
1
解决办法
1202
查看次数

视图控制器类的出口是弱还是强?OSX应用程序

这就是我所做的.

  1. 制作一个干净的OSX项目.
  2. 转到main.xib并拖动一个弹出控制器.这在界面构建器上创建了2个可见对象.
  3. 我去了appDelegate.h文件并做了

    ` - @ Property(assign)IBOutlet NSViewController*popVC;

  4. 然后我去了applicationDidFinishLaunching:方法并做了

    popVC = [[NSViewController alloc] init];

结果:我收到以下错误消息:

在此输入图像描述

笔尖上的对象是否应该是弱的,因为它已经被笔尖拥有了?

cocoa objective-c nib nspopover

3
推荐指数
1
解决办法
188
查看次数

如何从Objective C KVO中的observationInfo方法获取信息?

存在observationInfo返回对象的绑定的信息的方法.我环顾四周但我不知道如何从字典中获取信息.任何人都可以带领我朝着正确的方向前进吗?

编辑 以防任何人误解我说的话.我的课程已经全部符合KVO标准.现在,将观察者添加到something对象后,self.something现在将具有绑定信息.如果我做[self.something observationInfo],这将返回一个字典.我想访问该词典的内容.

Apple医生说

为了提高性能,可以重写此方法和setObservationInfo:以将不透明数据指针存储在实例变量中.此方法的覆盖不得尝试将Objective-C消息发送到存储的数据,包括保留和释放.

所以我知道它可以做到......我的问题是如何做到的?我看不到任何信息在线.

cocoa binding objective-c key-value-observing

3
推荐指数
1
解决办法
2662
查看次数

如果在块内引用self,为什么这不是保留周期?

@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)
  • 编译器抱怨#1是保留周期.而我明白了

案例#2

@implementation
-(void)viewDidLoad {
    NSString * (^translationKeyBlock)(NSString *) = ^NSString*(NSString* translationKey){        
        return _aString;
    };
    _translateKey = translationKeyBlock;
}
Run Code Online (Sandbox Code Playgroud)
  • 编译器不会抱怨案例#2.但这仍然是一个保留周期吗?

cocoa cocoa-touch objective-c ios objective-c-blocks

3
推荐指数
1
解决办法
73
查看次数

如何将这个ObjectiveC块存储在swift变量中?

这是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语句将为theBlocknil as?。当我将语句更改theBlock = theArrayThatHasTheBlockInItAtIndexZero[0] as! ()->Void为时,出现运行时错误在此处输入图片说明

我不确定该怎么办。这是一个空项目,实际上没有任何代码。

cocoa cocoa-touch objective-c objective-c-blocks swift

3
推荐指数
1
解决办法
1898
查看次数

如何制作一个包含特定值的Swift词典?

通常我会像这样创建我的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只接受StringBool赋值类型?

[编辑] - 用例是:我需要有一个键和值的字典.但我只想将值限制为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 根据下面的答案,我选择了协议方法,因为它在语法上更容易.但正如鲶鱼在评论中提到的那样,它可能会占用更多的内存.

cocoa cocoa-touch ios swift

3
推荐指数
2
解决办法
212
查看次数

如何使用VIPER artechiture设置异步图像加载?

应用程序的本质是一个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步感到困惑:

  1. VC - > interacterOutput.loadImage("someLink")
  2. Interacter - >完成图像的工作,并将UIimage发送给演示者
  3. Presenter - > UIImage已经为VC格式正确,因此将信息传递回VC
  4. VC - >我应该如何最好地设置代码,以便单元格知道它的图像准备好了?我不想重新加载整个tableView

任何帮助将不胜感激.

viper-architecture

3
推荐指数
1
解决办法
963
查看次数

我如何知道SwiftUI按钮是否已启用?

isEnabledSwiftUI按钮没有属性。我如何知道它是否启用?

在常规的UIKit中,我只会做

if button.isEnabeld == true {
} else {
}
Run Code Online (Sandbox Code Playgroud)

但是没有等效的SwiftUI。

swift swiftui

3
推荐指数
3
解决办法
440
查看次数

NSTask vs System - 优点和缺点?

我正处于一个需要调用系统命令的项目中.我最初开始关注NSTask(因为这似乎是最流行的方法),但最近我刚刚遇到了system命令.它看起来像NSTask更容易设置.我看到一些问题/答案说NSTask是更好的方法,但我没有看到

  1. 两者之间有什么优点/缺点
  2. 在什么情况下,一个人比另一个人更有可能被使用

任何帮助/链接/想法/想法?(是的..我做了谷歌搜索)

objective-c nstask

2
推荐指数
2
解决办法
1078
查看次数