小编n.e*_*ind的帖子

如何比较两个NSDates:哪个更近?

我正在尝试实现dropBox同步,需要比较两个文件的日期.一个在我的dropBox帐户上,一个在我的iPhone上.

我想出了以下内容,但我得到了意想不到的结果.我想在比较这两个日期时我做了一些根本错误的事情.我只是使用了> <运算符,但我想这并不好,因为我正在比较两个NSDate字符串.开始了:

NSLog(@"dB...lastModified: %@", dbObject.lastModifiedDate); 
NSLog(@"iP...lastModified: %@", [self getDateOfLocalFile:@"NoteBook.txt"]);

if ([dbObject lastModifiedDate] < [self getDateOfLocalFile:@"NoteBook.txt"]) {
    NSLog(@"...db is more up-to-date. Download in progress...");
    [self DBdownload:@"NoteBook.txt"];
    NSLog(@"Download complete.");
} else {
    NSLog(@"...iP is more up-to-date. Upload in progress...");
    [self DBupload:@"NoteBook.txt"];
    NSLog(@"Upload complete.");
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下(随机和错误)输出:

2011-05-11 14:20:54.413 NotePage[6918:207] dB...lastModified: 2011-05-11 13:18:25 +0000
2011-05-11 14:20:54.414 NotePage[6918:207] iP...lastModified: 2011-05-11 13:20:48 +0000
2011-05-11 14:20:54.415 NotePage[6918:207] ...db is more up-to-date.
Run Code Online (Sandbox Code Playgroud)

或者这个恰好是正确的:

2011-05-11 14:20:25.097 NotePage[6903:207] dB...lastModified: 2011-05-11 13:18:25 +0000
2011-05-11 14:20:25.098 NotePage[6903:207] iP...lastModified: 2011-05-11 13:19:45 +0000 …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c nsdate

240
推荐指数
9
解决办法
14万
查看次数

在Objective-C中大写或更改NSString的大小写

我想知道如何大写在一个对象中找到的字符串NSMutableArray.

一个NSArray包含字符串'April'索引2.
我想这是改变'APRIL'.

这样简单吗?

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] capitalized];
Run Code Online (Sandbox Code Playgroud)

string cocoa-touch objective-c nsstring uppercase

139
推荐指数
2
解决办法
11万
查看次数

iCloud基础知识和代码示例

作为初学者,我正在努力与iCloud合作.有一些样本,但它们通常非常详细(在开发者论坛上有一个用于iCloud和CoreData的大量).在苹果的文档都OK,但我仍然无法看到大局.所以请耐心等待,其中一些问题非常重要,但可能很容易回答.

上下文:我有一个非常简单的iCloud应用程序运行(下面的完整示例代码).只有一个UITextView显示给用户,他/她的输入保存在名为text.txt的文件中.

在此输入图像描述

txt文件被推送到云端并可供所有设备使用.效果很好,但是:

主要问题:不使用iCloud的用户怎么办?

当我启动我的应用程序(请参阅下面的代码)时,我会检查用户是否启用了iCloud.如果启用了iCloud,一切都很好.该应用程序继续前进,在云端查找text.txt.如果找到,它将加载它并将其显示给用户.如果在云中找不到text.txt,它将只创建一个新的text.txt并将其显示给用户.

如果用户未启用iCloud,则不会发生任何事情.如何让非iCloud用户仍然可以使用我的文本应用程序?或者我只是忽略它们?我是否需要为非iCloud用户编写单独的功能?即我只是从文档文件夹中加载text.txt的函数?

Apple写道:

处理iCloud中的文件的方式与处理应用程序沙箱中的所有其他文件的方式相同.

但是,在我的情况下,没有"正常"的应用程序沙箱了.它在云端.或者我是否总是首先从磁盘加载我的text.txt然后检查iCloud是否有更新的东西?

相关问题:文件结构 - 沙箱与云

也许我的主要问题是对iCloud应该如何工作的基本误解.当我创建一个UIDocument的新实例时,我将不得不覆盖两个方法.首先- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError从云端获取文件,然后-(id)contentsForType:(NSString *)typeName error:(NSError **)outError将文件导入云端.

我是否必须合并单独的功能,这些功能还会将text.txt的本地副本保存到我的沙盒中?这适用于非iCloud用户吗?据我了解iCloud,它会自动保存text.txt的本地副本.因此,我不应该需要将任何内容保存到我的应用程序的"旧"沙箱中(即过去曾经是旧的,在iCloud之前的日子).现在,我的沙箱完全是空的,但我不知道这是否正确.我应该在那里保留另一份text.txt吗?这感觉就像是混乱了我的数据结构...因为云中有一个text.txt,一个位于我设备上的iCloud沙箱中(即使我离线也会工作),还有一个位于旧沙箱中的第三个我的应用......


我的代码:一个简单的iCloud示例代码

这基于我在开发人员论坛和WWDC会话视频中找到的示例.我将它剥离到最低限度.我不确定我的MVC结构是否有用.该模型在AppDelegate中并不理想.欢迎任何改善它的建议.


编辑:我试图提取主要问题并发布[在这里].4


概述:

概观

从云中加载text.txt的最重要的一点:

//  AppDelegate.h
//  iCloudText

#import <UIKit/UIKit.h>

@class ViewController;
@class MyTextDocument;

@interface AppDelegate : UIResponder <UIApplicationDelegate> {
    NSMetadataQuery *_query;
}

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ViewController *viewController;
@property (strong, nonatomic) MyTextDocument *document;

@end

//  AppDelegate.m
//  iCloudText

#import "AppDelegate.h"
#import "MyTextDocument.h"
#import …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c ios icloud

83
推荐指数
2
解决办法
5万
查看次数

限制UITextview的行数

我想知道如何限制用户在编辑UITextField时可以输入的LINES(不是其他问题中提到的字符)的数量.

理想情况下,我想将输入限制为最大值.10行.

我需要从哪里开始?我是用方法做的吗?在

 - (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch uitextview

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

如何检查Objective-C中是否存在目录

我想这是一个初学者的问题,但我试图检查iPhone上的Documents文件夹中是否存在目录.我阅读了文档并提出了这段代码,遗憾的是,它在BOOL fileExists行中与EXC_BAD_ACCESS崩溃:

 -(void)checkIfDirectoryAlreadyExists:(NSString *)name
{
    NSFileManager *fileManager = [[NSFileManager alloc] init];

    NSString *path = [[self documentsDirectory] stringByAppendingPathComponent:name];

    BOOL fileExists = [fileManager fileExistsAtPath:path isDirectory:YES];

    if (fileExists)
    {
        NSLog(@"Folder already exists...");
    }

}
Run Code Online (Sandbox Code Playgroud)

我不明白我做错了什么?它看起来对我来说都很完美,它肯定符合文档,不是吗?关于我哪里出错的任何启示都将受到高度赞赏!谢谢.

更新:

还是行不通...

  -(void)checkIfDirectoryAlreadyExists:(NSString *)name
{
    NSFileManager *fileManager = [[NSFileManager alloc] init];

    NSString *path = [[self documentsDirectory] stringByAppendingPathComponent:name];

    BOOL isDir;
    BOOL fileExists = [fileManager fileExistsAtPath:path isDirectory:&isDir];

    if (fileExists)
    {


        if (isDir) {

            NSLog(@"Folder already exists...");

        }

    }

}
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c nsfilemanager

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

UIView:如何确定视图是否已存在?

我想知道如何找出子视图(在我的情况下是pageShadowView)是否已添加到我的视图中.

我想出了这个,但它确实不起作用:

if ([pageShadowView isKindOfClass:[self.view class]]) {
        [self.view addSubview:pageShadowView];
    }
Run Code Online (Sandbox Code Playgroud)

而且,我仍然对自我感到困惑.我知道这与明确我们正在谈论当前ViewController的视图有关...但如果(1)没有其他ViewControllers或(2)如果它真的不重要,我真的需要它吗?因为如果我想引用另一个viewController,我一定要调用它吗?

如果这一切都非常基本,我很抱歉,但我非常感谢你的评论.

iphone cocoa-touch objective-c uiview

24
推荐指数
4
解决办法
3万
查看次数

NSMakeCollectable和ARC不起作用

我正在尝试将旧项目转换为ARC.我有一个创建UUID的函数,但显然在使用ARC时不再支持:

NSString *uuid = nil;
    CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
    if (theUUID) {
        uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
        //[uuid autorelease];
        CFRelease(theUUID);
    }
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误(尝试转换时):'NSMakeCollectable'不可用:在自动引用计数模式下不可用.

所以我的问题是:如何在使用ARC时创建UUID?还有其他方法我现在应该使用吗?

iphone objective-c ios automatic-ref-counting

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

UIDeviceOrientationFaceUp - 如何区分肖像和风景?

我试图找出设备是纵向还是横向模式.如果设备没有朝上,我的代码工作得很好.如果它面朝上(和方向== 5),它将无法区分肖像和风景.如果UIDeviceOrientation是FaceUp,有没有在风景/肖像方面确定"方向"?

我的代码:

UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];

NSLog(@"orientation: %d", interfaceOrientation);

if (interfaceOrientation == UIDeviceOrientationIsLandscape(interfaceOrientation)) {
    NSLog(@"LANDSCAPE!!!");
}

if (interfaceOrientation == UIDeviceOrientationIsPortrait(interfaceOrientation)) {
    NSLog(@"PORTRAIT!!!");
}
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch ipad landscape-portrait uideviceorientation

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

#define的问题 - 在"="标记之前的预期表达式

初学者的问题:我敢把常量引入我的小程序中.我第一次抵制,但后来我想我应该试一试......看看它不起作用.

好的,这是我放在.m文件的第一行:

#define kPageCurlSpeed = 2.5;
Run Code Online (Sandbox Code Playgroud)

这就是我在我的方法中所做的:

[UIView setAnimationDuration:kPageCurlSpeed];
Run Code Online (Sandbox Code Playgroud)

并且看哪......它不起作用,我得到编译器消息"预期表达式"="令牌"...我不知道如何将其翻译成英语.

我认为编译器只是用2.5替换kPageCurlSpeed - 所以这不应该导致任何问题.但我猜这只是理论.

任何帮助将非常感谢.

cocoa-touch objective-c ios c-preprocessor

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

如何在UITextView中实现简单的"实时"字数

我正在尝试在用户输入文本时实现UITextView的简单字符数(即它应该连续更新).

我有两个问题.

(1)首先是我不知道我应该在哪种方法中使用charCount方法.textViewShouldBeginEditing不起作用,因为它只是询问编辑会话是否应该开始.textView:shouldChangeTextInRange也不起作用,因为它再次询问是否允许开始编辑.我在Apple doc中找不到其他有用的方法.

(2)下一个问题:我试图从另一个方法中调用我的charCount方法.但是我得到了编译错误:'ViewController'可能无法响应'charCount'.

这是我的谦卑尝试:

- (IBAction)charCount:(id)sender {

// all chars
int charsAsInt = (int)(textView.text.length);
NSString *newText = [[NSString alloc] initWithFormat:@"All chars: %d", charsAsInt];
allCharacters.text = newText;
[newText release];}

- (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView {

    [self charCount];}
Run Code Online (Sandbox Code Playgroud)

我想这与我试图调用IBAction定义的方法有关,这不起作用.但是,在非IBAction方法中调用IBAction方法的正确方法是什么?

一如既往,我很抱歉这些非常基本的问题,我非常感谢每一个小小的帮助,让我的初学者能够理解这一点.

iphone cocoa-touch objective-c uitextview

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