小编glo*_*gic的帖子

delete_all vs destroy_all?

我正在寻找从表中删除记录的最佳方法.例如,我有一个用户,其用户ID跨越许多表.我想删除此用户以及在所有表中具有其ID的每个记录.

u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Run Code Online (Sandbox Code Playgroud)

这工作并从所有表中删除用户的所有引用,但我听说这destroy_all是非常重的过程,所以我尝试了delete_all.它只从用户自己的用户表中删除用户,并将id所有其他表中的用户设为null,但保留其中的记录.有人可以分享执行此类任务的正确流程吗?

我看到在所有相关对象上destroy_all调用该destroy函数,但我只是想确认正确的方法.

ruby database activerecord ruby-on-rails

182
推荐指数
3
解决办法
9万
查看次数

AFNetworking 2.0取消了特定任务

我正在尝试afnetworking 2.0并试图找出如何取消特定任务.旧的方式是使用类似的东西

[self cancelAllHTTPOperationsWithMethod:@"POST" path:@"user/receipts"]
Run Code Online (Sandbox Code Playgroud)

但我在2.0中没有看到这样的东西

我创建了一个子类AFHTTPSessionManager,让我可以访问待处理任务的数组,我可以直接取消它们,但我不知道如何识别另一个任务,所以我只能取消特定的任务.任务确实有一个taskidentifier,但这似乎不是我需要的.

NSString *path = [NSString stringWithFormat:@"user/receipts"];
[self.requestSerializer setAuthorizationHeaderFieldWithUsername:[prefs valueForKey:@"uuid"] password:self.store.authToken];
[self GET:path parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
            completionBlock(responseObject);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            errorBlock(error);
        }];
Run Code Online (Sandbox Code Playgroud)

现在,如果我想取消此请求,我将如何处理此问题?

ios afnetworking afnetworking-2

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

ios6 uilabel不是中心文本对齐

我正在开发ios应用程序最小ios 5,我刚刚与uilabels发生了一个奇怪的问题.或者也许是我遗漏了一些明显 无论如何,我遇到的问题是我有一个uilabel,它将以文本对齐为中心.所有在ios 5上工作正常,但在ios 6上它总是左对齐.我看到旧的uilabel文本对齐方式已经弃用了,设置它应该可以工作.

self.topComment.textAlignment = NSTextAlignmentCenter;
Run Code Online (Sandbox Code Playgroud)

但即便如此,它仍然只在ios 5上居中对齐并在ios 6上左对齐.我确实有一些代码可以调整标签中文本的字体大小,以使其适合最小和最大尺寸.

UIFont *font = self.topComment.font;

for(int i = maxFont; i > minFont; i--)
{
    // Set the new font size.
    font = [font fontWithSize:i];
    CGSize constraintSize = CGSizeMake(self.topComment.frame.size.width, 1000);
    CGSize labelSize = [topString sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    if(labelSize.height <= self.topComment.frame.size.height ) {
        fits = YES;
        break;
    }
    //self.topComment.text = topString;

}


self.topComment.font = font;
self.topComment.text = topString;
Run Code Online (Sandbox Code Playgroud)

所以这是我对标签做的唯一的事情,但它始终在ios 6中保持对齐.重要的是要注意,如果我放入带有文本和中心对齐的uilabel并且不使用上面的代码,那么它将以两者为中心ios 5和6.

objective-c ios

11
推荐指数
1
解决办法
6508
查看次数

uilabel尾截断

我正在使用目标c在ios应用程序上工作,我与uilabel有一个问题,我可以使用一些帮助.基本上我有一个标签,可以改变大小以适应它将显示的文本,但它有一个可能的最大高度.标签本身始终具有固定的宽度.我已经打开了UILineBreakModeWordWrap和UILineBreakModeTailTruncation来使文本适合并截断,但这会导致文本在它只剩下1个单词时过早地截断尾部.而当它仍有空间时,它将它移动到下一行,它只是截断它.

self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, fixedWidth, 0);
self.lineBreakMode = UILineBreakModeWordWrap | UILineBreakModeTailTruncation;
self.numberOfLines = 0;
[self sizeToFit];
Run Code Online (Sandbox Code Playgroud)

无论如何找到uilabel实际截断文本的时间,然后我可以检查标签高度,如果还有空间则添加它?当有空间时,我总是尝试在高度上添加一条额外的线,这样可以避免早期截断,但是我会在整个标签上留下不一致的尺寸.任何想法都会非常感谢

objective-c uilabel ios

7
推荐指数
1
解决办法
2万
查看次数

如何在我的android库中包含依赖项

我正在编写一个android sdk,我现在想分发它,但我的依赖项存在问题.我正在使用gradle和android studio.

我的sdk依赖于volley和gson,我将它们添加为我的sdk中的jar.当我试图在一个单独的客户端应用程序中创建一个aar或jar时,我总是会遇到崩溃,因为我的sdk试图引用齐射,因为它没有包含在aar或jar中.关于我应该怎么做的任何想法?我已经研究过制造肥胖罐子并取得了很大的成功.

我也尝试过使用下面的远程依赖项,但即使在客户端应用程序中进行gradle构建之后,仍然不包括volley和gson.这是我目前在sdk build.gradle中的内容

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.google.code.gson:gson:2.3'
}
Run Code Online (Sandbox Code Playgroud)

然后在客户端构建gradle我有

repositories {
    flatDir {
        dirs 'libs'
    }
}


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name:'mysdk-1.0.0', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)

我正在使用./gradlew clean build构建我的sdk的aar和jar任何人都可以告诉我在我自己的lib中包含依赖项的正确方法吗?

java android android-gradle-plugin

7
推荐指数
1
解决办法
2084
查看次数

为uitableview创建自定义删除按钮

我在ios应用程序上工作,我的问题是如何更改滑动上的默认按钮以删除uitableview.我看到我可以用titleForDeleteConfirmationButtonForRowAtIndexPath更改文本,但我想完全更改图像.香港专业教育学院一直在寻找一种方式,所有关于它的帖子可能已经过时,所以只想在我继续这个之前与人们确认.我要做的是为细胞本身添加一个手势识别器,以捕捉用户在单个细胞上滑动,然后添加我的自定义按钮并从那里重新排列细胞框架,忘记苹果默认滑动以完全删除.那声音怎么样?

iphone uitableview ipad ios

6
推荐指数
1
解决办法
9913
查看次数

如何向WindowManager添加活动

我正在编写一个需要在客户端应用程序顶部显示活动的android库.经过一些阅读后,似乎我想要添加一个新窗口,所以我添加了这个权限.

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过这样做添加图像视图

        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT);

        params.gravity = Gravity.BOTTOM | Gravity.LEFT;
        params.x = 10;
        params.y = 100;

        ImageView imageview = new ImageView(this);

        imageview.setImageResource(R.drawable.avatar);
        windowManager.addView( imageview , params);
Run Code Online (Sandbox Code Playgroud)

但我想要的是在客户端应用程序窗口顶部的这个新窗口上拥有自己的活动.这有可能吗?我该怎么做?

android

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

是否可以在NSMutableArray中调配addObject:?

是否可以调用NSMutableArray的addObject:方法?

这是我正在尝试的.

#import <Foundation/Foundation.h>
#import <objc/runtime.h>

@implementation NSMutableArray (LoggingAddObject)


+ (void)load {
Method addObject = class_getInstanceMethod(self, @selector(addObject:));
Method logAddObject = class_getInstanceMethod(self, @selector(logAddObject:));
method_exchangeImplementations(addObject, logAddObject);

Method original = class_getInstanceMethod(self, @selector(setObject:atIndexedSubscript:));
Method swizzled = class_getInstanceMethod(self, @selector(swizzled_setObject:atIndexedSubscript:));
method_exchangeImplementations(original, swizzled);
}


- (void)logAddObject:(id)anObject {
[self logAddObject:anObject];
NSLog(@"Added object %@ to array %@", anObject, self);
}

-(void)swizzled_setObject:(id)obj atIndexedSubscript:(NSUInteger)idx
{
NSLog(@"This gets called as expected!!-----");
[self swizzled_setObject:obj atIndexedSubscript:idx];  
}
Run Code Online (Sandbox Code Playgroud)

我能够调整一些像setObject:atIndexedSubscript这样的方法:但我担心我不能这样做addObject:和其他人.我觉得下面不能调整?有人可以解释原因吗?我做错了什么或者解决这个问题?

/****************   Mutable Array       ****************/

@interface NSMutableArray : NSArray

- (void)addObject:(id)anObject;
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
- (void)removeLastObject;
- …
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutablearray ios

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