我目前正在CoreData中的iOS应用程序中保存日期.在Core Data中,我的日期属性是"Date"类型.在我的NSManagedObjectSubclass文件中,属性的类型为:NSDate(很好).Core Data中的日期存储为:2014/05/16 14:54:51当我检查SQLite3导航器中的实际值时,它将以以下形式存储:
421959291.293972为该日期
我如何获得日期的上述值,有没有办法将其转换回形式:2014/05/16 14:54:51?我问这个是因为我试图通过CSV文件创建数据集,并希望确保我在CSV文件中输入的所有值都被Core Data/SQLite3正确转换为正确的格式.
我有一个UITableView,我使用滑动删除功能,为用户提供删除行的选项.但是,我还实现了一个警报视图,当用户选择删除时会触发警报视图,询问用户是否确定,有两个按钮,是或否.如果用户按下是,则删除该行,这样可以正常工作.
但是,我的问题是,当用户选择"否"时,我无法动画表格单元格的移动以返回其正常的原始状态,同时隐藏它显示的删除按钮.我的问题是,我希望该行在用户在警报上按下no之后执行此操作,并使动画平滑,就像用户最初刷卡时一样.
我的代码如下:
- (void) cancelDelete {
//[self.tableView reloadData];
//NSLog(@"the indexpath is: %@ ", self.myIndexPath);
//[self.tableView deselectRowAtIndexPath:self.myIndexPath animated:YES];
[self.tableView reloadRowsAtIndexPaths:@[self.deletedRowIndexPath] withRowAnimation:UITableViewRowAnimationRight];
}
Run Code Online (Sandbox Code Playgroud)
我已经留下了注释线,以向您展示我使用/正在使用的内容.
[self.tableView reloadData]将单元格返回到其原始状态,但右侧没有单元格的滑动动画,这样它就会逐渐隐藏删除按钮. [self.tableView reloadRowsAtIndexPaths:@[self.myIndexPath] withRowAnimation:UITableViewRowAnimationRight]是什么在起作用最接近的,但不幸的是,它会导致细胞挺举到左边,然后向右滑动,而我不希望这个最初的抽搐运动.老实说,我认为这样[self.tableView deselectRowAtIndexPath:self.myIndexPath animated:YES]可行,但不幸的是,它在调用时没有做任何事情.我做错了什么?
我有一个NSMutableArray包含Person类型的对象.Person对象包含NSString*name,NSString*dateStamp和NSString*testScore的参数.我想用快速枚举做的是检查NSMutableArray*testResults,查看是否存在具有相同名称参数的对象.
如果确实如此,那么我想NSMutableArray用我将要插入的具有dateStamp最新值的对象和testScore值替换现有对象.如果找到没有匹配name参数的对象,则只需插入我拥有的对象.
到目前为止,我的代码如下所示:
这是创建我要插入的对象的代码:
Person *newPerson = [[Person alloc] init];
[newPerson setPersonName:newName]; //variables newName, pass, and newDate have already been
[newPerson setScore:pass]; //created and initialized
[newPerson setDateStamp:newDate];
Run Code Online (Sandbox Code Playgroud)
这里是我尝试迭代NSMutableArray以查看是否已存在具有相同名称参数的对象的代码:
for (Person *checkPerson in personList) { //personList is of type NSMutableArray
if (newPerson.newName == checkPerson.name) {
//here is where I need to insert the code that replaces checkPerson with newPerson after a match has been found
}
else …Run Code Online (Sandbox Code Playgroud) 我有一个具有多个viewControllers的应用程序,其中一些viewControllers包含运行各种任务的方法.我需要做的是当初始viewController加载时,是在其他viewControllers中调用这些方法使它们在后台运行,但是,我在执行此操作时遇到了一些困难.
假设我有4个viewControllers,A,B,C和D,其中A是最初的viewController,在每个viewController中,我分别有aMethod,bMethod,cMethod和dMethod.这是相关代码:
在我打开的viewController(AviewController)里面:
在.h文件中:
#import "BViewController"
#import "CViewController"
#import "DViewController"
@interface AViewController:UIViewController {
BViewController *bViewCon;
CViewController *cViewCon;
DViewController *dViewCon;
}
@property (nonatomic, retain) BViewController *bViewCon;
@property (nonatomic, retain) CViewController *cViewCon;
@property (nonatomic, retain) DViewController *dViewCon;
@end
Run Code Online (Sandbox Code Playgroud)
在我的.m文件中,我有以下内容:
#import "BViewController"
#import "CViewController"
#import "DViewController"
@implementation AviewController
@synthesize bViewCon, cViewCon, dViewCon;
- (void) viewDidLoad {
[super viewDidLoad];
bViewCon = [[BViewController alloc] init];
[bViewCon bMethod];
...
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到错误消息,"没有可见的@interface为'BViewController'声明选择器'bMethod'".我需要从这个类(即AViewController)以相同的方式从其他viewControllers调用其他方法.
在此先感谢所有回复的人.
我正在使用iOS中的应用程序向用户显示随机字符串,并要求用户通过键盘输入相同的字符串.我想要做的是比较用户输入的字符串,仅在他们按下"返回"键后.这可能吗?
以下是我的相关方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.tag == 1)
{
userString = @"";
userString = keypadText.text;
[keypadText resignFirstResponder];
//here 'rand' is the random string that was presented earlier to the user, and userString is the text that the user has entered.
if ([userString isEqualToString:rand]) {
//do something
}
else {
//do something else
}
[self.navigationController popViewControllerAnimated:YES];
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
正如我所说,我只想在用户按下"返回"键后进行比较,直到那时,允许用户尽可能多地输入给定的文本,并进行必要的修正.
有人能告诉我怎么做吗?
我试图在Swift中显示AlertController,但不是来自UIViewController,而是来自从其父UIViewController调用的UIView.当我尝试调用控制器时,我收到以下错误:
Warning: Attempt to present <UIAlertController: 0x7fa5544a3140> on
<UINavigationController: 0x7fa553830400> whose view is not in the window
hierarchy!
Run Code Online (Sandbox Code Playgroud)
我试图调用alertController的代码是这样的:
let logInButton = TWTRLogInButton { (session, error) in
if let unwrappedSession = session {
let alert = UIAlertController(title: "Logged In",
message: "User \(unwrappedSession.userName) has logged in",
preferredStyle: UIAlertControllerStyle.Alert
)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
//self.presentViewController(alert, animated: true, completion: nil)
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(alert, animated: true, completion: nil)
} else {
NSLog("Login error: %@", error!.localizedDescription);
}
}
Run Code Online (Sandbox Code Playgroud)
上面代码块中的注释行是原始代码块附带的内容,注释下面的行是我试图替换它的代码.任何人都可以看到它我做错了什么?
我有一个模型对象数组,我从JSON数据创建.我有成千上万的记录包含重复项,我需要删除它们.如果记录具有相同的"名称"和相同的"地址"属性,则该记录被视为重复.
问题是,我知道如何删除重复对象的唯一方法是在for循环搜索中执行for循环,我想知道是否有更好,更有效的方法?我认为最好的方法是使用"过滤器"方法,但是我很难配置它来处理包含具有多个属性的模型对象的数组.
我的模型对象如下所示:
struct Person {
let id: Int
let name: String
let address: String
init(id:Int, name:String, address:String) {
self.id = id
self.name = name
self.address = address
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在我的模型对象数组上使用filter方法的方式看起来像这样(我知道这不起作用):
let uniqueArray = peopleArray.filter { $0.name == $1.name, $0.address == $1.address }
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到它我做错了什么?
我有一个UITextField,它接收我的应用程序中用户的数字输入.然后,在我的shouldChangeCharactersInRange委托方法中,使用NSNumberFormatter将此文本字段中的值转换为货币格式.当我输入数字"12345678"时,数字被正确转换为$ 123456.78(数字一次输入一位数,到目前为止,一切顺利).但是,当我在此之后输入另一个数字(例如9),而不是显示"1234567.89"时,会显示数字"1234567.88".如果我之后输入另一个数字,之后会有一个完全不同的数字(我在应用程序中使用数字键盘输入数字.这是我的代码:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
modifiedValue = [formatter stringFromNumber:[NSNumber numberWithFloat:[modifiedValue floatValue]]];
textField.text = modifiedValue;
Run Code Online (Sandbox Code Playgroud)
导致这种异常转换的行是这样的:
modifiedValue = [formatter stringFromNumber:[NSNumber numberWithFloat:[modifiedValue floatValue]]];
Run Code Online (Sandbox Code Playgroud)
谁能明白为什么会这样?
我有两个数组,一个保存键值(myKeys),另一个保存NSString对象(myStrings).我想使用两个数组来使用快速枚举来填充单个NSDictionary(myDictionary),但我不确定如何?
for (NSNumber *key in myKeys) {
[self.myDictionary setObject @"here is where the value should go from the 'other' array forKey: key];
}
Run Code Online (Sandbox Code Playgroud)
我如何在这里考虑NSArray对象?
ios ×8
objective-c ×2
swift ×2
arrays ×1
core-data ×1
csv ×1
for-loop ×1
nsdate ×1
nsdictionary ×1
sqlite ×1
uitableview ×1
uitextfield ×1
uiview ×1